{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import OneHotEncoder,LabelEncoder,MinMaxScaler\n",
    "import xgboost as xgb\n",
    "import os\n",
    "os.environ['KMP_DUPLICATE_LIB_OK']='True'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "Dataset_dir = [\"./train.csv\", \"./store.csv\",\"./test.csv\"]\n",
    "pd.options.display.max_columns = None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_data(dir):\n",
    "    data = pd.read_csv(dir[0],parse_dates=[2])\n",
    "    store = pd.read_csv(dir[1])\n",
    "    test = pd.read_csv(dir[2],parse_dates=[3])\n",
    "    return data,store,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3185: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  if (yield from self.run_code(code, result)):\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['Store', 'DayOfWeek', 'Date', 'Sales', 'Customers', 'Open', 'Promo',\n",
      "       'StateHoliday', 'SchoolHoliday', 'StoreType', 'Assortment',\n",
      "       'CompetitionDistance', 'CompetitionOpenSinceMonth',\n",
      "       'CompetitionOpenSinceYear', 'Promo2', 'Promo2SinceWeek',\n",
      "       'Promo2SinceYear', 'PromoInterval'],\n",
      "      dtype='object')\n",
      "Index(['Id', 'Store', 'DayOfWeek', 'Date', 'Open', 'Promo', 'StateHoliday',\n",
      "       'SchoolHoliday', 'StoreType', 'Assortment', 'CompetitionDistance',\n",
      "       'CompetitionOpenSinceMonth', 'CompetitionOpenSinceYear', 'Promo2',\n",
      "       'Promo2SinceWeek', 'Promo2SinceYear', 'PromoInterval'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "train,store,test = load_data(Dataset_dir)\n",
    "train = train[train['Open'] != 0]\n",
    "train = pd.merge(train, store, on='Store')\n",
    "test = pd.merge(test, store, on='Store')\n",
    "print(train.columns)\n",
    "print(test.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#对时间序列进行分析\n",
    "#总的销售趋势2013-2015年\n",
    "# train['date'] = pd.to_datetime(train.Date)\n",
    "# data = train.loc[:,['Sales']]\n",
    "# data = data.set_index(train.date)\n",
    "# data.plot()\n",
    "\n",
    "# weekly = data.resample('W').sum()\n",
    "# weekly.plot()\n",
    "\n",
    "# dayily = data.resample('D').sum()\n",
    "# dayily.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "TESTID = test['Id']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD8CAYAAAB+UHOxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAFLFJREFUeJzt3X+QXeV93/H3xysMjuMiiBbKSGA5ieqIqGNCNpjU1FObVoDTsUjHniKnsSprqv5BVNzpDMGhUzXY7uBppzi4NSk1uCITi1AnHjQOY1kjy8noDzCrQDCgeCQ7GHagIEYyJiCDgG//uI/wFax279WP3ZXO+zWzc875nufc8xyNdj/3POfce1JVSJK65y2z3QFJ0uwwACSpowwASeooA0CSOsoAkKSOMgAkqaMMAEnqKANAkjrKAJCkjpo32x2YyoIFC2rx4sWz3Q1JOqHs2LHj2aoana7dnA6AxYsXMz4+PtvdkKQTSpIfDtLOISBJ6igDQJI6ygCQpI4yACSpowwASeooA0Aa0saNG1m2bBkjIyMsW7aMjRs3znaXpCMyp28DleaajRs3cv3113PbbbdxySWXsH37dtasWQPAypUrZ7l30nAylx8JOTY2Vn4OQHPJsmXL+MIXvsAHPvCB12vbtm1j3bp1PPzww7PYM+mnkuyoqrFp2xkA0uBGRkb4yU9+wimnnPJ67cCBA5x22mm8+uqrs9gz6acGDQCvAUhDWLp0Kdu3bz+ktn37dpYuXTpLPZKOnAEgDeH6669nzZo1bNu2jQMHDrBt2zbWrFnD9ddfP9tdk4bmRWBpCAcv9K5bt46dO3eydOlSPvvZz3oBWCckrwFI0knGawCSpCkZAJLUUdMGQJJ3J3mw7+fHST6Z5MwkW5LsatMzWvskuTnJ7iQPJbmw77VWtfa7kqw6ngcmSZratAFQVd+rqguq6gLgV4EXga8B1wFbq2oJsLUtA1wBLGk/a4FbAJKcCawH3gtcBKw/GBqSpJk37BDQpcD3q+qHwApgQ6tvAK5s8yuAO6rnXmB+knOAy4AtVbW3qvYBW4DLj/oIJElHZNgAuAo4+M1XZ1fVUwBtelarLwSe6NtmotUOV5ckzYKBAyDJW4EPA/93uqaT1GqK+hv3szbJeJLxPXv2DNo9SdKQhjkDuAL4q6p6ui0/3YZ2aNNnWn0COLdvu0XAk1PUD1FVt1bVWFWNjY5O+1B7SdIRGiYAVvLT4R+ATcDBO3lWAXf31T/e7ga6GHiuDRFtBpYnOaNd/F3eapKkWTDQV0Ek+RngnwH/tq98I3BXkjXA48BHW/0e4EPAbnp3DK0GqKq9ST4N3N/a3VBVe4/6CCRJR8SvgpCkk4xfBSFJmpIBIEkdZQBIUkcZAJLUUQaAJHWUASBJHWUASFJHGQCS1FEGgCR1lAEgSR1lAEhSRxkAktRRBoAkdZQBIEkdZQBIUkcZAJLUUQaAJHWUASBJHTVQACSZn+SrSf4myc4kv57kzCRbkuxq0zNa2yS5OcnuJA8lubDvdVa19ruSrDr8HiVJx9ugZwB/AHyjqn4JeA+wE7gO2FpVS4CtbRngCmBJ+1kL3AKQ5ExgPfBe4CJg/cHQkCTNvGkDIMnfA94P3AZQVS9X1Y+AFcCG1mwDcGWbXwHcUT33AvOTnANcBmypqr1VtQ/YAlx+TI9GkjSwQc4Afh7YA3w5yQNJvpTk7cDZVfUUQJue1dovBJ7o236i1Q5XP0SStUnGk4zv2bNn6AOSJA1mkACYB1wI3FJVvwK8wE+HeyaTSWo1Rf3QQtWtVTVWVWOjo6MDdE+SdCQGCYAJYKKq7mvLX6UXCE+3oR3a9Jm+9uf2bb8IeHKKuiRpFkwbAFX1/4Ankry7lS4FHgU2AQfv5FkF3N3mNwEfb3cDXQw814aINgPLk5zRLv4ubzVJ0iyYN2C7dcAfJ3kr8ANgNb3wuCvJGuBx4KOt7T3Ah4DdwIutLVW1N8mngftbuxuqau8xOQpJ0tBS9aZh+DljbGysxsfHZ7sbknRCSbKjqsama+cngSWpowwASeooA0CSOsoAkKSOMgAkqaMMAGlIGzduZNmyZYyMjLBs2TI2btw4212SjogBIA1h48aNXHPNNbzwwgtUFS+88ALXXHONIaATkgEgDeHaa69lZGSE22+/nZdeeonbb7+dkZERrr322tnumjQ0A0AawsTEBKtXr2bdunWcdtpprFu3jtWrVzMxMTHbXZOGNuhXQUhqvvzlL/OVr3yFSy65hO3bt/Oxj31strskHREDQBrCvHnzeP755/nEJz7B448/znnnncfzzz/PvHn+KunE4/9aaQivvPIKr732Gvv376eq2L9/P/v37+e1116b7a5JQ/MagDSEU089lZUrV7JgwQKSsGDBAlauXMmpp546212ThmYASEN4+eWX2bx58yG3gW7evJmXX355trsmDc0hIGkICxcu5Omnn+bZZ58F4LHHHuOUU05h4cI3Pd5amvM8A5CGsG/fPg4cOHBI7cCBA+zbt2+WeiQdOQNAGsILL7wwVF2aywYKgCSPJflukgeTjLfamUm2JNnVpme0epLcnGR3koeSXNj3Oqta+11JVh1uf5Kk42+YM4APVNUFfY8Zuw7YWlVLgK1tGeAKYEn7WQvcAr3AANYD7wUuAtYfDA1J0sw7miGgFcCGNr8BuLKvfkf13AvMT3IOcBmwpar2VtU+YAtw+VHsX5J0FAYNgAK+mWRHkrWtdnZVPQXQpme1+kLgib5tJ1rtcHVJ0iwY9DbQ91XVk0nOArYk+Zsp2maSWk1RP3TjXsCsBTjvvPMG7J4kaVgDnQFU1ZNt+gzwNXpj+E+3oR3a9JnWfAI4t2/zRcCTU9TfuK9bq2qsqsZGR0eHOxpJ0sCmDYAkb0/yjoPzwHLgYWATcPBOnlXA3W1+E/DxdjfQxcBzbYhoM7A8yRnt4u/yVpMkzYJBhoDOBr6W5GD7r1TVN5LcD9yVZA3wOPDR1v4e4EPAbuBFYDVAVe1N8mng/tbuhqrae8yORJI0lFS9aRh+zhgbG6vx8fHZ7ob0uvZGaFJz+XdJ3ZJkR98t+4flJ4ElqaMMAEnqKANAkjrKAJCkjjIAJKmjDABJ6igDQJI6ygCQpI4yACSpowwASeooA0CSOsoAkKSOMgAkqaMMAEnqKANAkjrKAJCkjjIAJKmjDABJ6qiBAyDJSJIHkny9Lb8ryX1JdiX5kyRvbfVT2/Lutn5x32t8qtW/l+SyY30wkqTBDXMGcA2ws2/5c8BNVbUE2AesafU1wL6q+kXgptaOJOcDVwG/DFwOfDHJyNF1X5J0pAYKgCSLgN8AvtSWA3wQ+GprsgG4ss2vaMu09Ze29iuAO6vqpar6W2A3cNGxOAhJ0vAGPQP4PHAt8Fpb/jngR1X1SlueABa2+YXAEwBt/XOt/ev1SbaRJM2waQMgyT8HnqmqHf3lSZrWNOum2qZ/f2uTjCcZ37Nnz3TdkyQdoUHOAN4HfDjJY8Cd9IZ+Pg/MTzKvtVkEPNnmJ4BzAdr604G9/fVJtnldVd1aVWNVNTY6Ojr0AUmSBjNtAFTVp6pqUVUtpncR91tV9VvANuAjrdkq4O42v6kt09Z/q6qq1a9qdwm9C1gCfOeYHYkkaSjzpm9yWL8L3JnkM8ADwG2tfhvwR0l203vnfxVAVT2S5C7gUeAV4OqqevUo9i9JOgrpvTmfm8bGxmp8fHy2uyG9rndD2+Tm8u+SuiXJjqoam66dnwSWpI4yACSpowwASeooA0CSOsoAkKSOMgAkqaMMAEnqKANAkjrKAJCkjjIAJKmjDABJ6igDQJI6ygCQpI4yACSpowwASeooA0CSOsoAkKSOMgAkqaOmDYAkpyX5TpK/TvJIkt9v9XcluS/JriR/kuStrX5qW97d1i/ue61Ptfr3klx2vA5KkjS9Qc4AXgI+WFXvAS4ALk9yMfA54KaqWgLsA9a09muAfVX1i8BNrR1Jzqf3gPhfBi4Hvphk5FgejCRpcNMGQPX8XVs8pf0U8EHgq62+Abiyza9oy7T1l6b3JO0VwJ1V9VJV/S2wG7jomByFJGloA10DSDKS5EHgGWAL8H3gR1X1SmsyASxs8wuBJwDa+ueAn+uvT7KNJGmGDRQAVfVqVV0ALKL3rn3pZM3aNIdZd7j6IZKsTTKeZHzPnj2DdE+SdASGuguoqn4EfBu4GJifZF5btQh4ss1PAOcCtPWnA3v765Ns07+PW6tqrKrGRkdHh+meJGkIg9wFNJpkfpt/G/BPgZ3ANuAjrdkq4O42v6kt09Z/q6qq1a9qdwm9C1gCfOdYHYgkaTjzpm/COcCGdsfOW4C7qurrSR4F7kzyGeAB4LbW/jbgj5LspvfO/yqAqnokyV3Ao8ArwNVV9eqxPRxJ0qDSe3M+N42NjdX4+Phsd0N6Xe+GtsnN5d8ldUuSHVU1Nl07PwksSR1lAEhSRxkAktRRBoAkdZQBIEkdZQBIUkcZAJLUUQaAJHWUASBJHWUASFJHGQCS1FEGgCR1lAEgSR1lAEhSRxkAktRRBoAkdZQBIEkdZQBIUkcN8lD4c5NsS7IzySNJrmn1M5NsSbKrTc9o9SS5OcnuJA8lubDvtVa19ruSrDrcPiVJx98gZwCvAP+hqpYCFwNXJzkfuA7YWlVLgK1tGeAKYEn7WQvcAr3AANYD7wUuAtYfDA1J0sybNgCq6qmq+qs2/zywE1gIrAA2tGYbgCvb/Argjuq5F5if5BzgMmBLVe2tqn3AFuDyY3o0kqSBDXUNIMli4FeA+4Czq+op6IUEcFZrthB4om+ziVY7XP2N+1ibZDzJ+J49e4bpniRpCAMHQJKfBf4U+GRV/XiqppPUaor6oYWqW6tqrKrGRkdHB+2eJGlIAwVAklPo/fH/46r6s1Z+ug3t0KbPtPoEcG7f5ouAJ6eoS5JmwSB3AQW4DdhZVf+9b9Um4OCdPKuAu/vqH293A10MPNeGiDYDy5Oc0S7+Lm81SdIsmDdAm/cBvw18N8mDrfZ7wI3AXUnWAI8DH23r7gE+BOwGXgRWA1TV3iSfBu5v7W6oqr3H5CgkSUNL1ZuG4eeMsbGxGh8fn+1uSK/rnRBPbi7/LqlbkuyoqrHp2vlJYEnqKANAkjrKAJCkjjIAJKmjDABJ6igDQJI6ygCQpI4yACSpowwASeqoQb4KQjrpTfUJ32P5Gn5aWHOJASAx+B9mvwpCJxOHgCSpowwAaQiHe5fvu3+diAwAaUhVRVXxzt/9+uvz0onIAJCkjjIAJKmjDABJ6igDQJI6apCHwt+e5JkkD/fVzkyyJcmuNj2j1ZPk5iS7kzyU5MK+bVa19ruSrJpsX5KkmTPIGcD/AS5/Q+06YGtVLQG2tmWAK4Al7WctcAv0AgNYD7wXuAhYfzA0JEmzY9oAqKq/BPa+obwC2NDmNwBX9tXvqJ57gflJzgEuA7ZU1d6q2gds4c2hIkmaQUd6DeDsqnoKoE3PavWFwBN97SZa7XD1N0myNsl4kvE9e/YcYfckSdM51heBJ/uilJqi/uZi1a1VNVZVY6Ojo8e0c5KknzrSAHi6De3Qps+0+gRwbl+7RcCTU9QlSbPkSL8NdBOwCrixTe/uq/9OkjvpXfB9rqqeSrIZ+C99F36XA5868m5LU3vP73+T5/YfOO77WXzdnx/X1z/9bafw1+uXH9d9qLumDYAkG4F/AixIMkHvbp4bgbuSrAEeBz7amt8DfAjYDbwIrAaoqr1JPg3c39rdUFVvvLAsHTPP7T/AYzf+xmx346gd74BRt00bAFW18jCrLp2kbQFXH+Z1bgduH6p3kqTjxk8CS1JHGQCS1FEGgCR1lM8E1knpHUuv4x9uuG76hnPcO5YCnPgXszU3GQA6KT2/80bvApKm4RCQJHWUASBJHeUQkE5aJ8PwyelvO2W2u6CTmAGgk9JMjP8vvu7PT4rrDOouh4AkqaMMAEnqKANAkjrKAJCkjjIAJKmjDABJ6igDQJI6ygCQpI6a8QBIcnmS7yXZneTE/7pGSTpBzWgAJBkB/idwBXA+sDLJ+TPZB0lSz0yfAVwE7K6qH1TVy8CdwIoZ7oMkiZkPgIXAE33LE60mSZphM/1lcJmkVoc0SNYCawHOO++8meiTRDLZf80BtvvccO2ravpG0gyZ6TOACeDcvuVFwJP9Darq1qoaq6qx0dHRGe2cuquqZuRHmktmOgDuB5YkeVeStwJXAZtmuA+SJGZ4CKiqXknyO8BmYAS4vaoemck+SJJ6ZvyBMFV1D3DPTO9XknQoPwksSR1lAEhSRxkAktRRBoAkdZQBIEkdlbn84ZQke4AfznY/pMNYADw7252QJvHOqpr2k7RzOgCkuSzJeFWNzXY/pCPlEJAkdZQBIEkdZQBIR+7W2e6AdDS8BiBJHeUZgCR1lAGgk06Sv5/kziTfT/JoknuS/IMhX+NKn1etk50BoJNKeo/2+hrw7ar6hao6H/g94OwhX+pKYEYDIMnITO5PMgB0svkAcKCq/vBgoaoeBEaSfP1gLcn/SPKv2/yN7UzhoST/Lck/Aj4M/NckDyb5hSQXJLm3tflakjPatt9OclOSv0yyM8mvJfmzJLuSfKZvf/8qyXfa6/2vg3/sk/xdkhuS3Af8+hv7MhP/YOquGX8egHScLQN2DNo4yZnAbwK/VFWVZH5V/SjJJuDrVfXV1u4hYF1V/UWSG4D1wCfby7xcVe9Pcg1wN/CrwF7g+0luAs4C/iXwvqo6kOSLwG8BdwBvBx6uqv/U+nJbf1+O+l9DmoJnAOq6HwM/Ab6U5F8AL76xQZLTgflV9RettAF4f1+Tg481/S7wSFU9VVUvAT+g9wzsS+mFwv1JHmzLP9+2eRX400H7Ih1LBoBONo/Q+2P7Rq9w6P/306D3mFLgInp/hK8EvnEE+3ypTV/rmz+4PA8IsKGqLmg/766q/9za/KSqXj2GfZEGZgDoZPMt4NQk/+ZgIcmv0XsG9flJTm3v6C9t634WOL09qvSTwAVts+eBdwBU1XPAviT/uK37beDg2cAgtgIfSXJW2+eZSd75xkZT9EU6LrwGoJNKGzv/TeDzSa6jN6TyGL0/qHcBDwG7gAfaJu8A7k5yGr136v++1e8E/neSfwd8BFgF/GGSn6E3tLN6iD49muQ/At9M8hbgAHA1b/6m28P1RTou/CSwJHWUQ0CS1FEGgCR1lAEgSR1lAEhSRxkAktRRBoAkdZQBIEkdZQBIUkf9f7VCYVqScZUtAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.Customers.plot(kind='box')\n",
    "plt.show()\n",
    "train.CompetitionDistance.plot(kind='box')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sales_mean = train.groupby('Store')['Sales'].mean()\n",
    "plt.hist(sales_mean)\n",
    "plt.show()\n",
    "plt.hist(np.log1p(sales_mean))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "Store_DaysWeek = train.groupby(['Store','DayOfWeek'])\n",
    "sw_mean = Store_DaysWeek[\"Sales\"].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def build_feature(data,istrain):\n",
    "    mappings = {'0':0, 'a':1, 'b':2, 'c':3, 'd':4}\n",
    "    data.StoreType.replace(mappings, inplace=True)\n",
    "    data.Assortment.replace(mappings, inplace=True)\n",
    "    data.StateHoliday.replace(mappings, inplace=True)\n",
    "    \n",
    "    #CART回归树不需要预处理数据和NAn值\n",
    "#     distance_max = max(data.CompetitionDistance)\n",
    "#     data.CompetitionDistance.mask(data.CompetitionDistance.isna(),other=distance_max,inplace=True)\n",
    "#     print(data.CompetitionDistance.isnull().any())\n",
    "#     min_max_scaler = MinMaxScaler()\n",
    "#     scaledata = min_max_scaler.fit_transform(data[['CompetitionDistance']])\n",
    "#     data.drop(\"CompetitionDistance\",axis=1)\n",
    "#     data['CompetitionDistance'] = scaledata\n",
    "    #时间序列问题 需要考虑进时间的因素\n",
    "    data['Year'] = data.Date.dt.year\n",
    "    print(data['Year'].dtype)\n",
    "    data['Month'] = data.Date.dt.month\n",
    "    data['Day'] = data.Date.dt.day\n",
    "    \n",
    "    if istrain:\n",
    "        data.drop(['Store','Open','Date','Customers','PromoInterval',],axis=1,inplace=True)\n",
    "        #data.drop(['Store','Open','Date','Customers','PromoInterval','SchoolHoliday','Promo2','StateHoliday','Promo2SinceWeek'],axis=1,inplace=True)\n",
    "    else:\n",
    "        data.drop(['Id','Store','Open','Date','PromoInterval',],axis=1,inplace=True)\n",
    "        #data.drop(['Id','Store','Open','Date','PromoInterval','SchoolHoliday','Promo2','StateHoliday','Promo2SinceWeek'],axis=1,inplace=True)\n",
    "    print(data.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "int64\n",
      "Index(['DayOfWeek', 'Sales', 'Promo', 'StateHoliday', 'SchoolHoliday',\n",
      "       'StoreType', 'Assortment', 'CompetitionDistance',\n",
      "       'CompetitionOpenSinceMonth', 'CompetitionOpenSinceYear', 'Promo2',\n",
      "       'Promo2SinceWeek', 'Promo2SinceYear', 'Year', 'Month', 'Day'],\n",
      "      dtype='object')\n",
      "int64\n",
      "Index(['DayOfWeek', 'Promo', 'StateHoliday', 'SchoolHoliday', 'StoreType',\n",
      "       'Assortment', 'CompetitionDistance', 'CompetitionOpenSinceMonth',\n",
      "       'CompetitionOpenSinceYear', 'Promo2', 'Promo2SinceWeek',\n",
      "       'Promo2SinceYear', 'Year', 'Month', 'Day'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "#build train data\n",
    "build_feature(train,True)\n",
    "#build test data\n",
    "build_feature(test,False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAacAAAEYCAYAAAD4czk4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl4VPXZ//H3Tdj3JYmy70RxYQsQcCFW61artnUBEVE2tdpq+9iW7o92efzZVVtrRRAVAVHqWqvWDW0VAmFVwEDYIwhh38l2//6YA4wayASSnJnk87quuTLzzXfO3Gc4kw/3mTNnzN0RERGJJ7XCLkBEROSLFE4iIhJ3FE4iIhJ3FE4iIhJ3FE4iIhJ3FE4iIhJ3FE4iIhJ3ygwnM0szs0VRl91mdreZXWtmS82sxMzSv3CfH5tZrpnlmNklUeOXBmO5Zja+MlZIREQSn5XnQ7hmlgR8CgwEGgIlwKPAPe6eHczpCUwHBgBtgLeAHsEiVgBfBfKAecAwd19WIWsiIiLVRu1yzr8QWOXu6w4PmNkX51wFPOPuh4A1ZpZLJKgAct19dXC/Z4K5xw2n5ORk79SpUznLFBGReDN//vyt7p4Sy9zyhtNQIl3R8bQF5kTdzgvGADZ8YXxgaQsws3HAOIAOHTqQnZ1dzjJFRCTemNm6smdFxHxAhJnVBa4EnitrailjfpzxLw+6T3D3dHdPT0mJKWRFRKQaKU/ndBmwwN03lzEvD2gfdbsdsDG4fqxxERGRI8pzKPkwyt6lB/AyMNTM6plZZ6A7MJfIARDdzaxz0IUNDeaKiIh8TkzhZGYNiRxl93zU2DfMLA8YBLxqZm8AuPtS4FkiBzq8Dtzh7sXuXgTcCbwBLAeeDeaKiIh8TrkOJQ9Denq664AIEZHEZ2bz3T297Jk6Q4SIiMQhhZOIiMQdhZOIiBzXpl0HeGVx1R5cXd4P4YqISDVXUFRC9rrtvJeTz6ycfHI27wGgX8cWtGneoEpqUDiJiAgbdx5gVk4+s3K28OGqbew9VESdJKN/p5b8pN9pZKal0rpZ/SqrR+EkIlIDFRSVkL12O7NWRAJpxea9ALRt3oAre7chs0cKg7sl07heODGhcBIRqSE+3XmAWTlbmJWTz4e5W9lXUEydJGNA55Zc2689mWkpdEttXNoJvaucwklEpJo6VFRM9todRwJp5Zaj3dHVfdqSmZbK4K6taBRSd3Q88VeRiIicsLwd+4P3jvL5cNVW9hcUUzepFgM6t+T6/pHuqGtKfHRHx6NwEhFJYIeKipm3JuiOVuSTG3RH7Vo04Jt925LZI5VBcdodHU9iVSsiImzYvp9ZK/J5Lziy7nB3NLBLS4b2b09mWipdUxrFfXd0PAonEZE4d6iomLlrth851HtV/j4A2rdswLf6tiMzLYVBXVvRsG71+ZNefdZERKQa2bB9/9Ej61Zt40BhMXVr12Jg55bcMLAjmWkpdElO7O7oeBROIiJx4GBhVHe0Ygurg+6oQ8uGXJse6Y4yulSv7uh4asZaiojEofXb9jNrRaQ7mh3VHWV0acWNQXfUuRp3R8ejcBIRqSIHC4vJWrOdWTlbeC8nn9VbI91Rx1YNuS69HZlpqWR0aUWDukkhVxo+hZOISCVat23fkQMZZq/exsHCEuoF3dGIQR3JTEulc3KjsMuMOwonEZEKdLCwmDmrtzErJ5/3VuSzJuiOOrVqyND+HRiSlsKgLq2oX0fd0fEonERETtLarfuOfAh2TlR3NKhrK0YG3VEndUflonASESmng4XFzF69Lfi+oy2s3bYfgM7JjRjav8ORI+vUHZ04hZOISAzWHO6OciLd0aGiEurXqcWgLq245ZzOZKal0LGVuqOKonASESnFgYLD7x1FdtetC7qjLsmNuGFgBzLTUhnYuaW6o0qicBIRAdw96I7ymbUin6yo7mhw12RGn9uZzB6pdGjVMOxSawSFk4jUWAcKipm9euuRr5hYvz3ojlIaMTz4EOwAdUehUDiJSI3h7qzeevRzR1lrtlNQVEKDOkkM7tqKsed1JjMtlfYt1R2FTeEkItXa/oIiZq/aduScdRu2HwCga0ojRmREuqP+ndQdxRuFk4hUK+7OqvzIkXXvrcj/XHd0TrdWjDu/K5k9UtQdxTmFk4gkvP0FRXyYu+3ISVTzdkS6o26pjbkpI/Ih2P6dW1CvtrqjRKFwEpGEE+mO9h45kGHumu0UFJfQsG4Sg7smc9uQrgxRd5TQFE4ikhD2HSriw1XbjnwQ9tOdke6oe2pjRg6OdEfpndQdVRdlhpOZpQEzooa6AL8AngrGOwFrgevcfYeZZQIvAWuC+c+7+33Bsi4FHgSSgInufn+FrIWIVDvuTu6WvUcOZJi3ZgcFxSU0qpvE4G7JfPuCSHfUroW6o+qozHBy9xygN4CZJQGfAi8A44G33f1+Mxsf3P5RcLf/uPsV0csJ7vsw8FUgD5hnZi+7+7KKWhkRSWz7DhXxQe5WZq3I572o7qjHKY25+ZxOZPZIIb1TS+rWrhVypVLZyrtb70JglbuvM7OrgMxg/ElgFkfDqTQDgFx3Xw1gZs8AVwEKJ5Eayt1ZuWXvkV1189Zup7DYaVQ3iXO6JXPHBd0YkpZC2+YNwi5Vqlh5w2koMD24foq7bwJw901mlho1b5CZLQY2Ave4+1KgLbAhak4eMLC0BzGzccA4gA4dOpSzRBGJZ3sPd0c5+by/4mh3lHZKE0ad05khaSmkd1R3VNPFHE5mVhe4EvhxGVMXAB3dfa+ZXQ68CHQHrJS5XtoC3H0CMAEgPT291DkikhjcnRWbj3ZH2esi3VHjerU5p1sr7vxKN4b0SKGNuiOJUp7O6TJggbtvDm5vNrPWQdfUGtgC4O67D9/B3f9lZn8zs2QinVL7qOW1I9JZiUg1s+dgIR/kbuO9FVt4LyefjbsOAnDaqU0YFZxAtV/HFuqO5JjKE07DOLpLD+BlYCRwf/DzJQAzOxXY7O5uZgOAWsA2YCfQ3cw6EzmoYihww0mvgYiEzt3J2bznyDnrstfuoKgk0h2d2y2Z716YwpC0FFo3U3cksYkpnMysIZGj7G6NGr4feNbMRgPrgWuD8WuA282sCDgADHV3B4rM7E7gDSKHkj8evBclIgko0h1F3jt6b0U+m6K6ozHndSEzLYV+HVtQJ0ndkZSfRXIjfqWnp3t2dnbYZYjUeO7OJ58d7Y7mr4t0R03q1ebc7slkpqUwpEcqpzarH3apEqfMbL67p8cyV2eIEJFj2n2wkA9WHu2OPtsd6Y5Ob92Used3IbNHCn3VHUklUDiJyBHuzvJNe46cQHXB4e6ofm3O655MZo9UhqSlcEpTdUdSuRROIjXc7oOF/Hfl1iNfMbF59yEAerZuyrjzu5CZlkqfDs3VHUmVUjiJ1DDuzrJNuyO76nLymb9+B8VBd3R+98hRdZk9UkhVdyQhUjiJ1AC7Dny+O9qyJ9IdndGmKbcNCbqj9s2pre5I4oTCSaQacneWbtzNeysiR9YtWL+T4hKnaf3anNcj0hkNUXckcUzhJFJN7NpfyH9y848cWZcfdEdntm3K7UO6kpmWQm91R5IgFE4iCaqk5PB7R5Ej6xZuiHRHzRrUiRxZl5bK+T2SSW2i7kgSj8JJJIHs2l/I+yuPdkdb90a6o7PaNuPbmZHuqFc7dUeS+BROInGspCTy3tGsnC3MWpHPwvU7KHFo1qAO5wfvHZ3fI4WUJvXCLlWkQimcROLMzv0FvB8cWff+iq1HuqOz2zXjzgu6MSQtld7tm5NUq7RvoRGpHhROIiErKXE+3rjryDnrFm3YSYlD84Z1OL97Cplpke4oubG6I6k5FE4iIdqy5yA3Pz6PZZt2YwZnt23GnV/pfuS9I3VHUlMpnERCsmnXAYY/lsWmXQe5/5tncVHPU9QdiQQUTiIhWL9tPzdMnMOu/YVMGT2A9E4twy5JJK4onESqWO6Wvdw4MYuDRcVMHTuQs9s1D7skkbijcBKpQss37WbEpCwApo/N4PTWTUOuSCQ+KZxEqsiSvJ3c9Phc6tWuxdQxGXRLbRx2SSJxS+EkUgWy127nlsnzaNawDtPGZNChVcOwSxKJazrHiUgl+zB3KyMmzSWlST2evXWQgkkkBuqcRCrRu59s4dan59O5VSOmjBmgk7CKxEjhJFJJXvtoE999ZiFppzZhyqiBtGhUN+ySRBKGduuJVIIXF37KndMXclbbZkwdk6FgEikndU4iFeyZuev58QsfMbBzSyaN7E+jenqZiZSXXjUiFWjyB2u495VlDOmRwqMj+lG/TlLYJYkkJIWTSAX526xcHng9h0vOOIWHhvWhXm0Fk8iJUjiJnCR3509vruChd3K5slcb/nBdL+rom2hFTorCSeQkuDu/eXU5E/+7huvT2/Pbb56lr7kQqQAKJ5ETVFLi/Pylj5matZ6bB3fiF1f0pJaCSaRClLnvwczSzGxR1GW3md1tZi3N7E0zWxn8bBHMNzN7yMxyzWyJmfWNWtbIYP5KMxtZmSsmUpmKikv4wcwlTM1az61DuvDLryuYRCpSmeHk7jnu3tvdewP9gP3AC8B44G137w68HdwGuAzoHlzGAY8AmFlL4JfAQGAA8MvDgSaSSAqLS7hrxiL+sSCP713Ug/GXnoaZgkmkIpX3XdsLgVXuvg64CngyGH8SuDq4fhXwlEfMAZqbWWvgEuBNd9/u7juAN4FLT3oNRKrQwcJibn96Aa8u2cRPLj+Nuy7qrmASqQTlfc9pKDA9uH6Ku28CcPdNZpYajLcFNkTdJy8YO9b4l5jZOCJdFx06dChniSKV40BBMeOmZPOflVv51VVnMGJQp7BLEqm2Yu6czKwucCXwXFlTSxnz44x/edB9grunu3t6SkpKrCWKVJq9h4oYOXkuH+Ru5YFrzlYwiVSy8uzWuwxY4O6bg9ubg911BD+3BON5QPuo+7UDNh5nXCSu7dpfyPCJWcxft4M/D+3Ddenty76TiJyU8oTTMI7u0gN4GTh8xN1I4KWo8ZuCo/YygF3B7r83gIvNrEVwIMTFwZhI3Nq29xDDHpvD8o27eWR4X67s1SbskkRqhJjeczKzhsBXgVujhu8HnjWz0cB64Npg/F/A5UAukSP7bgFw9+1m9itgXjDvPnffftJrIFJJNu8+yPCJWWzYvp/HRqYzpId2MYtUFXMv9W2fuJGenu7Z2dlhlyE1TN6O/QyfmEX+nkNMGtmfQV1bhV2SSMIzs/nunh7LXJ0hQuQL1m7dx/CJWew+WMjTYwbSt4M+jidS1RROIlFWbt7D8IlZFBaXMH1sBme2bRZ2SSI1ksJJJLB04y5GTJpLUi1jxq2D6HFKk7BLEqmxdF5/EWDh+h0MmzCH+rVr8ayCSSR06pykxstavY1RT8yjVeN6TBs7kHYtGoZdkkiNp3CSGu0/K/MZ+1Q2bZs3YOqYDE5tVj/skkQEhZPUYG8t28y3py6gS0ojnh4zkOTG9cIuSUQCCiepkf65ZCN3P7OIM9o05clRA2jesG7YJYlIFIWT1Dgz5+fxw5mL6dexBY/f3J8m9euEXZKIfIHCSWqUp+es42cvfsy53ZKZcFM/GtbVS0AkHumVKTXGxP+s5tevLufC01J5eHhf6tdJCrskETkGhZNUe+7OX9/J5Q9vruBrZ7XmT9f3pm5tfcRPJJ4pnKRac3d+90YOf5u1im/2acsD15xN7SQFk0i8UzhJteXu3PvKMp74cC3DBnTgN1efSa1apX0hs4jEG4WTVEvFJc7PXvyI6XM3MOqczvz8itMxUzCJJAqFk1Q7RcUl3PPcYl5ctJE7L+jG/1zcQ8EkkmAUTlKtFBSVcNczC3nt48/4wSVp3HFBt7BLEpEToHCSauNgYTG3Pz2fd3Py+fkVPRl9buewSxKRE6Rwkmph36Eixj6VzezV2/jtN87ihoEdwi5JRE6CwkkS3u6DhYyaPI8F63fwh2t78c2+7cIuSUROksJJEtrO/QXc9Phclm3czV+G9eVrZ7cOuyQRqQAKJ0lY+XsOMWJSFqu37uPREf248PRTwi5JRCqIwkkS0qZdBxg+MYtNOw/y+Mj+nNs9OeySRKQCKZwk4WzYvp8bJs5hx75Cnho9gP6dWoZdkohUMIWTJJTV+XsZPjGL/QXFTB0zkF7tm4ddkohUAoWTJIycz/YwfGIW7s70sRn0bNM07JJEpJIonCQhfPzpLkZMyqJu7VpMHZNBt9QmYZckIpVI4SRxb/66Hdw8eS5N69dh2tiBdGzVKOySRKSSKZwkrn24aitjnswmtUk9po7NoG3zBmGXJCJVQOEkcWtWzhZunTKfDi0bMnXMQFKb1g+7JBGpIjF9JaiZNTezmWb2iZktN7NBZtbLzGab2Udm9oqZNQ3mdjKzA2a2KLj8PWo5/YL5uWb2kOl7DOQYXv/4M8Y+lU231MbMuHWQgkmkhon1+6ofBF5399OAXsByYCIw3t3PAl4AfhA1f5W79w4ut0WNPwKMA7oHl0tPdgWk+nlp0afcMW0BZ7ZtxrSxGbRsVDfskkSkipUZTkFHdD4wCcDdC9x9J5AGvB9MexP4VhnLaQ00dffZ7u7AU8DVJ1G7VEPPztvA3TMWkd6xBVNGD6RZgzphlyQiIYilc+oC5AOTzWyhmU00s0bAx8CVwZxrgfZR9+kczH3PzM4LxtoCeVFz8oKxLzGzcWaWbWbZ+fn55VkfSWBPfriWH/5jCed2S+aJWwbQuJ7eEhWpqWIJp9pAX+ARd+8D7APGA6OAO8xsPtAEKAjmbwI6BHO/D0wLuq/S3l/y0h7Q3Se4e7q7p6ekpJRrhSQx/f29Vfzy5aV8tecpTByZToO6SWGXJCIhiiWc8oA8d88Kbs8E+rr7J+5+sbv3A6YDqwDc/ZC7bwuuzw/GewTLif6inXbAxopZDUlU7s6f3lzB/a99wtd7teFvw/tSr7aCSaSmKzOc3P0zYIOZpQVDFwLLzCwVwMxqAT8D/h7cTjGzpOB6FyIHPqx2903AHjPLCI7Suwl4qaJXSBKHu/N/r33Cg2+v5Np+7fjz9b2pkxTrMToiUp3FulP/O8BUM6sLrAZuAW4yszuC3z8PTA6unw/cZ2ZFQDFwm7tvD353O/AE0AB4LbhIDVRS4vzy5aVMmbOOmwZ15H+/fga1aumTBSISYZED5+JXenq6Z2dnh12GVKDiEudH/1jCzPl53Hp+F8Zfdhr6yJtI9Wdm8909PZa5OhxKqlRhcQnfm7GIfy7ZxF0Xdufui7ormETkSxROUmUOFRVz57SFvLlsM+MvO43bhnQNuyQRiVMKJ6kSBwqKufXp+by/Ip97rzyDkYM7hV2SiMQxhZNUur2Hihj9xDzmrt3OA986m+v6ty/7TiJSoymcpFLtOlDIzZPnsiRvF3++vjdX9S71pCAiIp+jcJJKs31fASMmZbFi8x4evqEvl555atgliUiCUDhJpdiy+yDDJ2axfvt+Hrspncy01LBLEpEEonCSCvfpzgMMf2wOW/YcYvIt/RncNTnskkQkwSicpEKt27aPGx7LYveBQqaMHkC/ji3DLklEEpDCSSpM7pa9DJ84h0NFJUwbm8FZ7ZqFXZKIJCiFk1SIZRt3M2JSFmbGjHGDSDu1SdgliUgC0ymg5aQt2rCTYY/NoW7tWjx7a4aCSUROmjonOSlz12xn1BPzaNGoDtPGZNC+ZcOwSxKRakDhJCfsvyu3MvapbFo3r8+0MRmc2qx+2CWJSDWh3XpyQt75ZDOjnpxHx1YNmTFukIJJRCqUOicpt399tInvTl9IzzZNefKWAbRoVDfskkSkmlE4Sbk8vyCPe55bTN8OLXj8lv40rV8n7JJEpBpSOEnMpmWt56cvfsSgLq2YODKdhnW1+YhI5dBfF4nJpP+u4Vf/XMYFaSk8cmM/6tdJCrskEanGFE5Spr++s5Lf/3sFl515Kg8O7UPd2jqORkQql8JJjsnd+f2/c3j43VVc3bsNv7+2F7WTFEwiUvkUTlIqd+dX/1zO4x+sYWj/9vzmG2eRVMvCLktEagiFk3xJSYnzs5c+ZlrWem4e3Ilffr0nZgomEak6Cif5nKLiEn44cwnPL/yUb2d25QeXpCmYRKTKKZzkiIKiEu6esZB/ffQZ91zcgzu/0j3skkSkhlI4CQAHC4v59tQFvPPJFn72tdMZc16XsEsSkRpM4STsLyhi3FPz+W/uVn599ZncmNEx7JJEpIZTONVwew4WMuqJecxft4PfX9uLa/q1C7skERGFU022c38BIx+fy9KNu3loWB+uOLtN2CWJiAAxfmWGmTU3s5lm9omZLTezQWbWy8xmm9lHZvaKmTWNmv9jM8s1sxwzuyRq/NJgLNfMxlfGCklstu49xNAJc1i+aQ9/v7GfgklE4kqsH/d/EHjd3U8DegHLgYnAeHc/C3gB+AGAmfUEhgJnAJcCfzOzJDNLAh4GLgN6AsOCuVLFPtt1kOsfnc3abfuYdHM6F/U8JeySREQ+p8xwCjqi84FJAO5e4O47gTTg/WDam8C3gutXAc+4+yF3XwPkAgOCS667r3b3AuCZYK5UoQ3b93Pdo7P5bNdBnrxlAOd1Twm7JBGRL4mlc+oC5AOTzWyhmU00s0bAx8CVwZxrgfbB9bbAhqj75wVjxxr/EjMbZ2bZZpadn58f88rI8a3Zuo/rH53Nzv0FTB2bwcAurcIuSUSkVLGEU22gL/CIu/cB9gHjgVHAHWY2H2gCFATzSzudgB9n/MuD7hPcPd3d01NS9D/7irBi8x6ue3Q2B4tKmD4ug97tm4ddkojIMcUSTnlAnrtnBbdnAn3d/RN3v9jd+wHTgVVR89tH3b8dsPE441LJPv50F9c/OhsDZozL4Iw2zcIuSUTkuMoMJ3f/DNhgZmnB0IXAMjNLBTCzWsDPgL8Hv38ZGGpm9cysM9AdmAvMA7qbWWczq0vkoImXK3Rt5EsWrN/BsMfm0LBubZ69dRDdT2kSdkkiImWK9XNO3wGmBqGyGrgFuMnM7gh+/zwwGcDdl5rZs8AyoAi4w92LAczsTuANIAl43N2XVtiayJfMWb2N0U/MI7lJPaaOGUi7Fg3DLklEJCbmXurbPnEjPT3ds7Ozwy4j4by3Ip9xT2XTvmVDpo4ZyClN64ddkojUcGY2393TY5mrM0RUQ/9e+hl3TltIt9TGTBk9gFaN64VdkohIuSicqpmXF2/kezMWcVbbZjx5ywCaNawTdkkiIuWmcKpGns3ewI/+sYT+nVry+M39aVxP/7wikpj016uamDJ7LT9/aSnndU9mwoh0GtRNCrskEZETpnCqBia8v4rf/usTLjo9lb/e0Jf6dRRMIpLYFE4JzN156O1c/vTWCr52dmv+fH1v6iTFei5fEZH4pXBKUO7O/a9/wqPvreZbfdvxwDVnk1SrtDNEiYgkHoVTAiopce59ZSlPzl7HjRkduO/KM6mlYBKRakThlGCKS5wfP7+EZ7PzGHteZ35y+emYKZhEpHpROCWQwuIS/ufZxby8eCPfvbA737uou4JJRKolhVOCOFRUzHenL+SNpZv54aVpfDuzW9gliYhUGoVTAjhYWMytU+bz3op8fvn1ntxyTuewSxIRqVQKpzi371ARY57MZs6abdz/zbMYOqBD2CWJiFQ6hVMc23WgkFsmz2Vx3i7+dF1vru5T6rfai4hUOwqnOLV9XwE3PZ5Fzmd7ePiGPlx6ZuuwSxIRqTIKpzi0Zc9BRkycy9pt+5gwIp0LTksNuyQRkSqlcIozm3YdYPhjWWzadZDJN/dncLfksEsSEalyCqc4sn7bfm6YOIdd+wuZMnoA6Z1ahl2SiEgoFE5xInfLXm6cmMXBomKmjh3I2e2ah12SiEhoFE5xYPmm3YyYlAXAM+MyOO3UpiFXJCISLoVTyJbk7WTEpLk0qJPE1LED6ZrSOOySRERCp3AKUfba7dwyeR7NGtZh+tgM2rdsGHZJIiJxQd9MF5IPc7cyYtJcUprU47nbBimYRESiqHMKwbufbOHWp+fTuVUjnh4zkJQm9cIuSUQkriicqthrH23iu88sJO3UJkwZNZAWjeqGXZKISNzRbr0q9OLCT7lz+kLOatuMqWMyFEwiIsegzqmKTJ+7np+88BEZnVsxcWQ6jerpqRcRORb9hawCj/93Dff9cxmZaSn8/cZ+1K+TFHZJIiJxTeFUyR5+N5ffvZHDJWecwkPD+lCvtoJJRKQsCqdK4u788c0V/OWdXK7q3YY/XNuL2kl6i09EJBYx/bU0s+ZmNtPMPjGz5WY2yMx6m9kcM1tkZtlmNiCYm2lmu4LxRWb2i6jlXGpmOWaWa2bjK2ulwubu/ObV5fzlnVyuT2/PH6/rrWASESmHWDunB4HX3f0aM6sLNASeBe5199fM7HLgASAzmP8fd78iegFmlgQ8DHwVyAPmmdnL7r6sAtYjbpSUOD9/6WOmZq3n5sGd+MUVPalVy8IuS0QkoZQZTmbWFDgfuBnA3QuAAjNz4PAZSpsBG8tY1AAg191XB8t9BrgKqDbhVFRcwo/+8RH/WJDHbUO68qNL0zBTMImIlFcsnVMXIB+YbGa9gPnAXcDdwBtm9nsiuwcHR91nkJktJhJY97j7UqAtsCFqTh4wsLQHNLNxwDiADh06lGuFwlJYXMLdMxbx6pJNfP+rPfjOV7opmERETlAsb4TUBvoCj7h7H2AfMB64Hfieu7cHvgdMCuYvADq6ey/gL8CLwXhpf6m9tAd09wnunu7u6SkpKTGvTFgOFhZz+9PzeXXJJn56+el898LuCiYRkZMQSzjlAXnunhXcnkkkrEYCzwdjzxHZbYe773b3vcH1fwF1zCw5WE77qOW2o+xdgXHvQEExY5/K5q3lW/jVVWcw9vwuYZckIpLwygwnd/8M2GBmacHQhUTeJ9oIDAnGvgKsBDCzUy1oG4Ij+GoB24B5QHcz6xwcVDEUeLkC16XK7T1UxMjJc/kgdyu/u+ZsRgzqFHZJIiLVQqxH630HmBqEymrgFuAl4EEzqw0cJHiPCLgGuN3MioADwFB3d6DIzO4E3gCSgMeD96IS0q79hdw0eS4ff7qLB4f24eu92oRdkohItWGR3Ihf6enpnp3+SEtWAAAKMElEQVSdHXYZn7Nt7yFGTJpL7pa9/PWGPlx8xqlhlyQiEvfMbL67p8cyV2eIKKfNuw8yfGIWG7bv57GR6QzpEf8HbIiIJBqFUznk7djP8IlZbN1ziCdHDSCjS6uwSxIRqZYUTjFau3UfNzw2h72HipgyZiB9O7QIuyQRkWpL4RSDlZv3MHxiFkUlzrSxGZzZtlnYJYmIVGsKpzIs3biLEZPmklTLmDEug+6nNAm7JBGRak+nyj6Ohet3MGzCHOrXrsWztw5SMImIVBF1TseQtXobo56YR6vG9Zg2diDtWjQMuyQRkRpD4VSK91fkM25KNm2bN2DqmAxObVY/7JJERGoUhdMXvLlsM3dMXUDX1MZMGT2A5Mb1wi5JRKTGUThFeWXxRr43YxFntGnKk6MG0Lxh3bBLEhGpkRROgZnz8/jhzMWkd2zJpJvTaVK/TtgliYjUWAon4Ok56/jZix9zbrdkJtzUj4Z19bSIiISpxv8Vnvif1fz61eVceFoqDw/vS/06SWGXJCJS49XYcHJ3/vpOLn94cwVfO6s1f7q+N3Vr62NfIiLxoEaGk7vzwBs5PDJrFd/s05YHrjmb2kkKJhGReFHjwqmkxLnvn8t44sO13DCwA7++6kxq1bKwyxIRkSg1KpyKS5yfvvARz8zbwOhzO/Ozr51O8I3yIiISR2pMOBUVl3DPc4t5cdFGvvOVbnz/qz0UTCIicapGhFNBUQl3PbOQ1z7+jB9cksYdF3QLuyQRETmOah9OBwuLuf3p+bybk8/Pr+jJ6HM7h12SiIiUoVqH075DRYx9KpvZq7fx22+cxQ0DO4RdkoiIxKBah9PiDTvJXreDP17Xi2/0aRd2OSIiEqNqHU6DuyXz/g8u0FdeiIgkmGr/yVMFk4hI4qn24SQiIolH4SQiInFH4SQiInFH4SQiInFH4SQiInFH4SQiInFH4SQiInFH4SQiInHH3D3sGo7LzPKBdSe5mGRgawWUU9lUZ8VLlFpVZ8VLlFprUp0d3T0llolxH04Vwcyy3T097DrKojorXqLUqjorXqLUqjpLp916IiISdxROIiISd2pKOE0Iu4AYqc6Klyi1qs6Klyi1qs5S1Ij3nEREJLHUlM5JREQSiMJJRETij7vH3QVoD7wLLAeWAncF4y2BN4GVwc8WwfhpwGzgEHBP1HLqA3OBxcFy7j3G49UDZgC5QBbQKep3Pw7Gc4BLQq7z+8AyYAnwNpHPDBz+XTGwKLi8HHKdNwP5UfWMifrdyODxVgIj4+Df/k9Rda4Adlblcxq1vCRgIfDPeNxGy1HnCW2jIdV6MyewnYZQ5wltoxVdK7AW+Ch4rOxj1GrAQ8H2uAToG+tr/0vLKmtCGBeg9eGVApoE/yA9gQeA8cH4eOD/BddTgf7Ab/j8HygDGgfX6xB5UWeU8njfBv4eXB8KzAiu9yTyx60e0BlYBSSFWOcFQMPg+u2H6wxu742j5/Nm4K+ljLcEVgc/WwTXW4RZ6xce+zvA41X5nEYt7/vANI79ByrUbbQcdZ7QNhpSrSe0nVZ1nSe6jVZ0rUTCKbmMx7sceI3I6y8DyIr1tf/FS1zu1nP3Te6+ILi+h0jqtwWuAp4Mpj0JXB3M2eLu84DCLyzH3X1vcLNOcPFSHjJ6uTOBC83MgvFn3P2Qu68h8r+BAWHV6e7vuvv+4OYcoF0p6/IlITyfx3IJ8Ka7b3f3HUT+x3ZpHNU6DJgey4pUVJ0AZtYO+Bow8TgPGeo2GmudJ7qNhlHrcRx3Ow25zpi30YquNUZXAU8Fr785QHMza00Mr/0vistwimZmnYA+RP7ne4q7b4LIk04k5cu6f5KZLQK2EHlyskqZ1hbYECy3CNgFtIoeD+QFY2HVGW00kf+hHFbfzLLNbI6ZXX2cx6mqOr9lZkvMbKaZtQ/GYn4+q7hWzKwjkc7jnajhKnlOgT8DPwRKjjMn9G00xjqjndA2WsW1ntR2WpXP6clsoxVUqwP/NrP5ZjbuGHOO9dyV67UPcR5OZtYY+Adwt7vvPpFluHuxu/cm8j+4AWZ2ZmkPVdpdjzMeVp2HH+9GIB34XdRwB4+cWuQG4M9m1jXEOl8h8p7I2cBbHP0fWkzPZxXXethQYKa7F0eNVfpzamZXAFvcfX5ZU0sZq7JttBx1Hp5/QttoFdd6UttpVT+nnOA2WhG1Bs5x977AZcAdZnZ+aQ9VyljM22m0uA0nM6tD5Mmc6u7PB8ObgxaR4OeWWJfn7juBWZTeSuYReeMQM6sNNAO2R48H2gEbQ6wTM7sI+ClwpbsfirrfxuDn6uD+fcKq0923RdX2GNAvuF7m81nVtUYZyhd2l1TRc3oOcKWZrQWeAb5iZk+XMi/sbTTWOk94G63qWk9mO63q5zRQ7m20AmuNfqwtwAtE7T6OcqznLqbXfrS4DKdgX/okYLm7/zHqVy8TOeKD4OdLZSwnxcyaB9cbABcBn5QyNXq51wDvuLsH40PNrJ6ZdQa6EzkCLJQ6zawP8CiRF/2WqPEWZlYvuJ5MZKNfFmKdraNuXklkPzfAG8DFQb0tgIuDsej7VvW/PWaWRuRN2tlRY1XynLr7j929nbt3IvLH5x13v7GUqaFuo7HWeaLbaEi1ntB2GsK//QltoxVZq5k1MrMmh68TeU4+LmXqy8BNFpEB7Ap2G5b52v8SL+PokDAuwLlEWr4lHD1M8nIi+9jfJnIo4ttAy2D+qUSSeTewM7jeFDibyCGaS4In8hdRj3EfkRcQRA47fo7Im8lzgS5R835K5AioHOCykOt8C9jMFw4dBQYTOcRzcfBzdMh1/h+Rw1YXEzmM9bSoeaOC5zkXuCXsf/vg9v8C93+hjip5Tr+wzEyijtgijrbRctR5QttoSLWe0HZa1XWe6DZawa+nLsHjHP5oxk+jHuM24LbgugEPE9kePwLSY33tf/Gi0xeJiEjcicvdeiIiUrMpnEREJO4onEREJO4onEREJO4onEREJO4onEQqSfBZj/+a2WVRY9eZ2eth1iWSCHQouUglCk6Z9ByRT+4nEfmcyaXuvuokllnbI+fXE6m2FE4ilczMHgD2AY2APe7+KzMbCdwB1AU+BO509xIzmwD0BRoQ+bqJ+4Jl5BE588KlwJ/d/bkQVkWkytQOuwCRGuBeYAFQAKQH3dQ3gMHuXhQE0lAi3+kz3t23B+fPe9fMZrr74VPS7HP3c8JYAZGqpnASqWTuvs/MZhD5YrhDwYlR+wPZkVOf0YCjXycwzMxGE3lttiHyxXCHw2lG1VYuEh6Fk0jVKOHod/YYkW8z/Xn0BDPrDtwFDHD3ncEZqutHTdlXJZWKxAEdrSdS9d4CrgvOJI2ZtTKzDkROsLkH2G1Hvz1UpEZS5yRSxdz9IzO7F3jLzGoR+Urs24BsIrvwPgZWAx+EV6VIuHS0noiIxB3t1hMRkbijcBIRkbijcBIRkbijcBIRkbijcBIRkbijcBIRkbijcBIRkbjz/wFnv82Z0VJVUgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ST_gp = train.groupby('StoreType')['Sales'].agg('mean')\n",
    "import seaborn as sns\n",
    "sns.barplot(ST_gp.index,ST_gp.values)\n",
    "plt.show()\n",
    "\n",
    "As_gp = train.groupby('Assortment')['Sales'].agg('mean')\n",
    "sns.barplot(As_gp.index,As_gp.values)\n",
    "plt.show()\n",
    "Dayweek_gp = train.groupby(['StoreType','DayOfWeek'])['Sales'].agg('mean')\n",
    "ax = sns.barplot(Dayweek_gp.index,Dayweek_gp.values)\n",
    "ax.set_xticklabels(ax.get_xticklabels(), rotation=90, ha=\"right\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "#每年销售额的趋势\n",
    "YearS_gp = train.groupby(['Year'])['Sales'].agg(\"mean\")\n",
    "ax2 = sns.lineplot(YearS_gp.index,YearS_gp.values)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#去除Nan数据\n",
    "\n",
    "train.CompetitionDistance.fillna(0,inplace=True)\n",
    "train.CompetitionOpenSinceMonth.fillna(0,inplace=True)\n",
    "train.CompetitionOpenSinceYear.fillna(0,inplace=True)\n",
    "train.Promo2SinceWeek.fillna(0,inplace=True)\n",
    "train.Promo2SinceYear.fillna(0,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(834259, 16)\n",
      "(10133, 16)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\pandas\\core\\frame.py:3697: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  errors=errors)\n"
     ]
    }
   ],
   "source": [
    "#split train vaild data\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_valid = train_test_split(train, test_size=0.012, random_state=10)\n",
    "print(X_train.shape)\n",
    "print(X_valid.shape)\n",
    "Y_train = X_train[\"Sales\"]\n",
    "Y_valid = X_valid[\"Sales\"]\n",
    "X_train.drop(\"Sales\",axis=1,inplace=True)\n",
    "X_valid.drop(\"Sales\",axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.boxplot([Y_train,Y_valid])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Y_train = np.log1p(Y_train)\n",
    "Y_valid = np.log1p(Y_valid)\n",
    "plt.boxplot([Y_train,Y_valid])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ToWeight(y):\n",
    "    w = np.zeros(y.shape, dtype=float)\n",
    "    ind = y != 0\n",
    "    w[ind] = 1./(y[ind]**2)\n",
    "    return w\n",
    "\n",
    "def rmspe(yhat, y):\n",
    "    w = ToWeight(y)\n",
    "    rmspe = np.sqrt(np.mean( w * (y - yhat)**2 ))\n",
    "    return rmspe\n",
    "\n",
    "def rmspe_xg(yhat, y):\n",
    "    # y = y.values\n",
    "    y = y.get_label()\n",
    "    y = np.exp(y) - 1\n",
    "    yhat = np.exp(yhat) - 1\n",
    "    w = ToWeight(y)\n",
    "    rmspe = np.sqrt(np.mean(w * (y - yhat)**2))\n",
    "    return \"rmspe\", rmspe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\xgboost\\core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n",
      "  if getattr(data, 'base', None) is not None and \\\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\tvalidation_0-rmse:7.44319\tvalidation_1-rmse:7.43877\tvalidation_0-rmspe:0.999496\tvalidation_1-rmspe:0.999476\n",
      "Multiple eval metrics have been passed: 'validation_1-rmspe' will be used for early stopping.\n",
      "\n",
      "Will train until validation_1-rmspe hasn't improved in 20 rounds.\n",
      "[1]\tvalidation_0-rmse:6.70071\tvalidation_1-rmse:6.69673\tvalidation_0-rmspe:0.998792\tvalidation_1-rmspe:0.99877\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-19-81fd3c1c661b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[0mstart\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     20\u001b[0m \u001b[0mestimator\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mxgb\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mXGBRegressor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmax_depth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m12\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlearning_rate\u001b[0m \u001b[1;33m=\u001b[0m\u001b[1;36m0.1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mn_jobs\u001b[0m \u001b[1;33m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_estimators\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnum_trees\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msubsample\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.8\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcolsample_bytree\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.8\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnthread\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mscale_pos_weight\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 21\u001b[1;33m \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0meval_metric\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrmspe_xg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0meval_set\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0meval_set\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mverbose\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mearly_stopping_rounds\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m20\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     22\u001b[0m \u001b[1;31m#gbm = xgb.train(params, dtrain, num_trees, evals=watchlist, early_stopping_rounds=50,evals_result =ret, feval=rmspe_xg, verbose_eval=True)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     23\u001b[0m \u001b[0mend\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\sklearn.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, callbacks)\u001b[0m\n\u001b[0;32m    376\u001b[0m                               \u001b[0mevals_result\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals_result\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    377\u001b[0m                               \u001b[0mverbose_eval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mverbose\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxgb_model\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxgb_model\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 378\u001b[1;33m                               callbacks=callbacks)\n\u001b[0m\u001b[0;32m    379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    380\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mevals_result\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, learning_rates)\u001b[0m\n\u001b[0;32m    214\u001b[0m                            \u001b[0mevals\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m                            \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                            xgb_model=xgb_model, callbacks=callbacks)\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36m_train_internal\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)\u001b[0m\n\u001b[0;32m     72\u001b[0m         \u001b[1;31m# Skip the first update if it is a recovery step.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mversion\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 74\u001b[1;33m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     75\u001b[0m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave_rabit_checkpoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     76\u001b[0m             \u001b[0mversion\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\core.py\u001b[0m in \u001b[0;36mupdate\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m   1108\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mfobj\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1109\u001b[0m             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, ctypes.c_int(iteration),\n\u001b[1;32m-> 1110\u001b[1;33m                                                     dtrain.handle))\n\u001b[0m\u001b[0;32m   1111\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1112\u001b[0m             \u001b[0mpred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "params = {\"objective\": \"reg:linear\",\n",
    "          \"eta\": 0.1,\n",
    "          \"max_depth\": 12,\n",
    "          \"min_child_weight\":1,\n",
    "          \"gamma\" :0,\n",
    "          \"subsample\": 0.7,\n",
    "          \"colsample_bytree\": 0.7,\n",
    "          \"silent\": 1\n",
    "          }\n",
    "num_trees = 1000\n",
    "\n",
    "# dtrain = xgb.DMatrix(X_train, Y_train)\n",
    "# dvalid = xgb.DMatrix(X_valid, Y_valid)\n",
    "# dtest = xgb.DMatrix(test)\n",
    "eval_set= [(X_train, Y_train),(X_valid, Y_valid)]\n",
    "#watchlist = [(dvalid, 'eval'), (dtrain, 'train')]\n",
    "ret = {}\n",
    "import time\n",
    "start = time.time()\n",
    "estimator = xgb.XGBRegressor(max_depth=12,learning_rate =0.1,n_jobs =4, n_estimators=num_trees,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1)\n",
    "estimator.fit(X_train, Y_train,eval_metric=rmspe_xg, eval_set=eval_set, verbose=True,early_stopping_rounds=20)\n",
    "#gbm = xgb.train(params, dtrain, num_trees, evals=watchlist, early_stopping_rounds=50,evals_result =ret, feval=rmspe_xg, verbose_eval=True)\n",
    "end = time.time()\n",
    "print(\"Train use time:\",end-start)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'XGBRegressor' object has no attribute 'evals_result_'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-20-a790267e6998>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mmatplotlib\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpyplot\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mevals_result\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      3\u001b[0m \u001b[0mepochs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'validation_0'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'rmspe'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mx_axis\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;31m# plot log loss\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\sklearn.py\u001b[0m in \u001b[0;36mevals_result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    496\u001b[0m             'validation_1': {'logloss': ['0.41965', '0.17686']}}\n\u001b[0;32m    497\u001b[0m         \"\"\"\n\u001b[1;32m--> 498\u001b[1;33m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mevals_result_\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    499\u001b[0m             \u001b[0mevals_result\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mevals_result_\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    500\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'XGBRegressor' object has no attribute 'evals_result_'"
     ]
    }
   ],
   "source": [
    "from matplotlib import pyplot\n",
    "results = estimator.evals_result()\n",
    "epochs = len(results['validation_0']['rmspe'])\n",
    "x_axis = range(0, epochs)\n",
    "# plot log loss\n",
    "fig, ax = pyplot.subplots()\n",
    "ax.plot(x_axis, results['validation_0']['rmspe'], label='Train')\n",
    "ax.plot(x_axis, results['validation_1']['rmspe'], label='Test')\n",
    "ax.legend()\n",
    "pyplot.ylabel('Rmspe Loss')\n",
    "pyplot.title('XGBoost Rmspe Loss')\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py:643: DeprecationWarning: \"fit_params\" as a constructor argument was deprecated in version 0.19 and will be removed in version 0.21. Pass fit parameters to the \"fit\" method instead.\n",
      "  '\"fit\" method instead.', DeprecationWarning)\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 3 candidates, totalling 9 fits\n",
      "[CV] max_depth=10 ....................................................\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-21-989d83b12e68>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     24\u001b[0m gsearch1 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=12,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n\u001b[0;32m     25\u001b[0m                         param_grid = param_test1,cv=3,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n\u001b[1;32m---> 26\u001b[1;33m \u001b[0mgsearch1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[0;32m    720\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    721\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 722\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    723\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    724\u001b[0m         \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36m_run_search\u001b[1;34m(self, evaluate_candidates)\u001b[0m\n\u001b[0;32m   1189\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1190\u001b[0m         \u001b[1;34m\"\"\"Search all candidates in param_grid\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1191\u001b[1;33m         \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mParameterGrid\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparam_grid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1192\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1193\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mevaluate_candidates\u001b[1;34m(candidate_params)\u001b[0m\n\u001b[0;32m    709\u001b[0m                                \u001b[1;32mfor\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    710\u001b[0m                                in product(candidate_params,\n\u001b[1;32m--> 711\u001b[1;33m                                           cv.split(X, y, groups)))\n\u001b[0m\u001b[0;32m    712\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    713\u001b[0m                 \u001b[0mall_candidate_params\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcandidate_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m    915\u001b[0m             \u001b[1;31m# remaining jobs.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    916\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 917\u001b[1;33m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdispatch_one_batch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    918\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_original_iterator\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    919\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36mdispatch_one_batch\u001b[1;34m(self, iterator)\u001b[0m\n\u001b[0;32m    757\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    758\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 759\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    760\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    761\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m_dispatch\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    714\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    715\u001b[0m             \u001b[0mjob_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 716\u001b[1;33m             \u001b[0mjob\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    717\u001b[0m             \u001b[1;31m# A job can complete so quickly than its callback is\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    718\u001b[0m             \u001b[1;31m# called before we get here, causing self._jobs to\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36mapply_async\u001b[1;34m(self, func, callback)\u001b[0m\n\u001b[0;32m    180\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    181\u001b[0m         \u001b[1;34m\"\"\"Schedule a func to be run\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 182\u001b[1;33m         \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mImmediateResult\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    183\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    184\u001b[0m             \u001b[0mcallback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    547\u001b[0m         \u001b[1;31m# Don't delay the application, to avoid keeping the input\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    548\u001b[0m         \u001b[1;31m# arguments in memory\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 549\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    550\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    551\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\u001b[0m in \u001b[0;36m_fit_and_score\u001b[1;34m(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, error_score)\u001b[0m\n\u001b[0;32m    526\u001b[0m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    527\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 528\u001b[1;33m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    529\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    530\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\sklearn.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, callbacks)\u001b[0m\n\u001b[0;32m    376\u001b[0m                               \u001b[0mevals_result\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals_result\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    377\u001b[0m                               \u001b[0mverbose_eval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mverbose\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxgb_model\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxgb_model\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 378\u001b[1;33m                               callbacks=callbacks)\n\u001b[0m\u001b[0;32m    379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    380\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mevals_result\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, learning_rates)\u001b[0m\n\u001b[0;32m    214\u001b[0m                            \u001b[0mevals\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m                            \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                            xgb_model=xgb_model, callbacks=callbacks)\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36m_train_internal\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)\u001b[0m\n\u001b[0;32m     72\u001b[0m         \u001b[1;31m# Skip the first update if it is a recovery step.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mversion\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 74\u001b[1;33m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     75\u001b[0m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave_rabit_checkpoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     76\u001b[0m             \u001b[0mversion\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\core.py\u001b[0m in \u001b[0;36mupdate\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m   1108\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mfobj\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1109\u001b[0m             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, ctypes.c_int(iteration),\n\u001b[1;32m-> 1110\u001b[1;33m                                                     dtrain.handle))\n\u001b[0m\u001b[0;32m   1111\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1112\u001b[0m             \u001b[0mpred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.metrics import make_scorer\n",
    "\n",
    "def customer_rmspe_xg(yhat, y):\n",
    "    # y = y.values\n",
    "    y = np.exp(y) - 1\n",
    "    yhat = np.exp(yhat) - 1\n",
    "    w = ToWeight(y)\n",
    "    rmspe = np.sqrt(np.mean(w * (y - yhat)**2))\n",
    "    return rmspe\n",
    "\n",
    "param_test1 = {\n",
    " 'max_depth':range(10,13,1),\n",
    " #'subsample': [0.7,0.8,0.9],\n",
    " #'learning_rate': [0.08,0.1,0.11]\n",
    "}\n",
    "params_fit = {\n",
    "    'eval_metric':rmspe_xg,\n",
    "    'early_stopping_rounds':20,\n",
    "    'eval_set':eval_set\n",
    "}\n",
    "nums_round = 492\n",
    "gsearch1 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=12,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n",
    "                        param_grid = param_test1,cv=3,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n",
    "gsearch1.fit(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'GridSearchCV' object has no attribute 'best_params_'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-22-29c5505b7922>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgsearch1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_params_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgsearch1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_score_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'GridSearchCV' object has no attribute 'best_params_'"
     ]
    }
   ],
   "source": [
    "print(gsearch1.best_params_)\n",
    "print(gsearch1.best_score_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py:643: DeprecationWarning: \"fit_params\" as a constructor argument was deprecated in version 0.19 and will be removed in version 0.21. Pass fit parameters to the \"fit\" method instead.\n",
      "  '\"fit\" method instead.', DeprecationWarning)\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 2 candidates, totalling 6 fits\n",
      "[CV] subsample=0.8 ...................................................\n",
      "[0]\tvalidation_0-rmse:7.44332\tvalidation_1-rmse:7.43878\tvalidation_0-rmspe:0.999496\tvalidation_1-rmspe:0.999476\n",
      "Multiple eval metrics have been passed: 'validation_1-rmspe' will be used for early stopping.\n",
      "\n",
      "Will train until validation_1-rmspe hasn't improved in 20 rounds.\n",
      "[1]\tvalidation_0-rmse:6.70085\tvalidation_1-rmse:6.69668\tvalidation_0-rmspe:0.998792\tvalidation_1-rmspe:0.99877\n",
      "[2]\tvalidation_0-rmse:6.03268\tvalidation_1-rmse:6.02902\tvalidation_0-rmspe:0.997522\tvalidation_1-rmspe:0.997495\n",
      "[3]\tvalidation_0-rmse:5.43172\tvalidation_1-rmse:5.42833\tvalidation_0-rmspe:0.995374\tvalidation_1-rmspe:0.995342\n",
      "[4]\tvalidation_0-rmse:4.89081\tvalidation_1-rmse:4.88764\tvalidation_0-rmspe:0.991982\tvalidation_1-rmspe:0.991942\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-23-c552ebd7f805>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m gsearch2 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n\u001b[0;32m      7\u001b[0m                         param_grid = param_test2,cv=3,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mgsearch2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[0;32m    720\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    721\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 722\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    723\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    724\u001b[0m         \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36m_run_search\u001b[1;34m(self, evaluate_candidates)\u001b[0m\n\u001b[0;32m   1189\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1190\u001b[0m         \u001b[1;34m\"\"\"Search all candidates in param_grid\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1191\u001b[1;33m         \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mParameterGrid\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparam_grid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1192\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1193\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mevaluate_candidates\u001b[1;34m(candidate_params)\u001b[0m\n\u001b[0;32m    709\u001b[0m                                \u001b[1;32mfor\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    710\u001b[0m                                in product(candidate_params,\n\u001b[1;32m--> 711\u001b[1;33m                                           cv.split(X, y, groups)))\n\u001b[0m\u001b[0;32m    712\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    713\u001b[0m                 \u001b[0mall_candidate_params\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcandidate_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m    915\u001b[0m             \u001b[1;31m# remaining jobs.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    916\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 917\u001b[1;33m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdispatch_one_batch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    918\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_original_iterator\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    919\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36mdispatch_one_batch\u001b[1;34m(self, iterator)\u001b[0m\n\u001b[0;32m    757\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    758\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 759\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    760\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    761\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m_dispatch\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    714\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    715\u001b[0m             \u001b[0mjob_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 716\u001b[1;33m             \u001b[0mjob\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    717\u001b[0m             \u001b[1;31m# A job can complete so quickly than its callback is\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    718\u001b[0m             \u001b[1;31m# called before we get here, causing self._jobs to\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36mapply_async\u001b[1;34m(self, func, callback)\u001b[0m\n\u001b[0;32m    180\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    181\u001b[0m         \u001b[1;34m\"\"\"Schedule a func to be run\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 182\u001b[1;33m         \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mImmediateResult\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    183\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    184\u001b[0m             \u001b[0mcallback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    547\u001b[0m         \u001b[1;31m# Don't delay the application, to avoid keeping the input\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    548\u001b[0m         \u001b[1;31m# arguments in memory\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 549\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    550\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    551\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\u001b[0m in \u001b[0;36m_fit_and_score\u001b[1;34m(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, error_score)\u001b[0m\n\u001b[0;32m    526\u001b[0m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    527\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 528\u001b[1;33m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    529\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    530\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\sklearn.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, callbacks)\u001b[0m\n\u001b[0;32m    376\u001b[0m                               \u001b[0mevals_result\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals_result\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    377\u001b[0m                               \u001b[0mverbose_eval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mverbose\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxgb_model\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxgb_model\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 378\u001b[1;33m                               callbacks=callbacks)\n\u001b[0m\u001b[0;32m    379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    380\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mevals_result\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, learning_rates)\u001b[0m\n\u001b[0;32m    214\u001b[0m                            \u001b[0mevals\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m                            \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                            xgb_model=xgb_model, callbacks=callbacks)\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36m_train_internal\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)\u001b[0m\n\u001b[0;32m     72\u001b[0m         \u001b[1;31m# Skip the first update if it is a recovery step.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mversion\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 74\u001b[1;33m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     75\u001b[0m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave_rabit_checkpoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     76\u001b[0m             \u001b[0mversion\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\core.py\u001b[0m in \u001b[0;36mupdate\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m   1108\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mfobj\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1109\u001b[0m             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, ctypes.c_int(iteration),\n\u001b[1;32m-> 1110\u001b[1;33m                                                     dtrain.handle))\n\u001b[0m\u001b[0;32m   1111\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1112\u001b[0m             \u001b[0mpred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "param_test2 = {\n",
    " 'subsample': [0.8,0.9],\n",
    "}\n",
    "\n",
    "nums_round = 492\n",
    "gsearch2 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n",
    "                        param_grid = param_test2,cv=3,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n",
    "gsearch2.fit(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'GridSearchCV' object has no attribute 'best_params_'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-24-83c12edb68a9>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgsearch2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_params_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgsearch2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_estimator_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mbest_model\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgsearch2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_estimator_\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexternals\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mjoblib\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[0mjoblib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdump\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbest_model\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"current_model.m\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'GridSearchCV' object has no attribute 'best_params_'"
     ]
    }
   ],
   "source": [
    "print(gsearch2.best_params_)\n",
    "print(gsearch2.best_estimator_)\n",
    "best_model = gsearch2.best_estimator_\n",
    "from sklearn.externals import joblib\n",
    "joblib.dump(best_model, \"current_model.m\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py:643: DeprecationWarning: \"fit_params\" as a constructor argument was deprecated in version 0.19 and will be removed in version 0.21. Pass fit parameters to the \"fit\" method instead.\n",
      "  '\"fit\" method instead.', DeprecationWarning)\n",
      "D:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_split.py:2053: FutureWarning: You should specify a value for 'cv' instead of relying on the default value. The default value will change from 3 to 5 in version 0.22.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 8 candidates, totalling 24 fits\n",
      "[CV] eta=0.08 ........................................................\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-25-8f8e009ab1b6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m gsearch3 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n\u001b[0;32m      7\u001b[0m                         param_grid = param_test3,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mgsearch3\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[0;32m    720\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    721\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 722\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    723\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    724\u001b[0m         \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36m_run_search\u001b[1;34m(self, evaluate_candidates)\u001b[0m\n\u001b[0;32m   1189\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1190\u001b[0m         \u001b[1;34m\"\"\"Search all candidates in param_grid\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1191\u001b[1;33m         \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mParameterGrid\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparam_grid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1192\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1193\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mevaluate_candidates\u001b[1;34m(candidate_params)\u001b[0m\n\u001b[0;32m    709\u001b[0m                                \u001b[1;32mfor\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    710\u001b[0m                                in product(candidate_params,\n\u001b[1;32m--> 711\u001b[1;33m                                           cv.split(X, y, groups)))\n\u001b[0m\u001b[0;32m    712\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    713\u001b[0m                 \u001b[0mall_candidate_params\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcandidate_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m    915\u001b[0m             \u001b[1;31m# remaining jobs.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    916\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 917\u001b[1;33m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdispatch_one_batch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    918\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_original_iterator\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    919\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36mdispatch_one_batch\u001b[1;34m(self, iterator)\u001b[0m\n\u001b[0;32m    757\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    758\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 759\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    760\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    761\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m_dispatch\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    714\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    715\u001b[0m             \u001b[0mjob_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 716\u001b[1;33m             \u001b[0mjob\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    717\u001b[0m             \u001b[1;31m# A job can complete so quickly than its callback is\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    718\u001b[0m             \u001b[1;31m# called before we get here, causing self._jobs to\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36mapply_async\u001b[1;34m(self, func, callback)\u001b[0m\n\u001b[0;32m    180\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    181\u001b[0m         \u001b[1;34m\"\"\"Schedule a func to be run\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 182\u001b[1;33m         \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mImmediateResult\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    183\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    184\u001b[0m             \u001b[0mcallback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    547\u001b[0m         \u001b[1;31m# Don't delay the application, to avoid keeping the input\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    548\u001b[0m         \u001b[1;31m# arguments in memory\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 549\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    550\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    551\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\u001b[0m in \u001b[0;36m_fit_and_score\u001b[1;34m(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, error_score)\u001b[0m\n\u001b[0;32m    526\u001b[0m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    527\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 528\u001b[1;33m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    529\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    530\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\sklearn.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, callbacks)\u001b[0m\n\u001b[0;32m    376\u001b[0m                               \u001b[0mevals_result\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals_result\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    377\u001b[0m                               \u001b[0mverbose_eval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mverbose\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxgb_model\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxgb_model\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 378\u001b[1;33m                               callbacks=callbacks)\n\u001b[0m\u001b[0;32m    379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    380\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mevals_result\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, learning_rates)\u001b[0m\n\u001b[0;32m    214\u001b[0m                            \u001b[0mevals\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m                            \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                            xgb_model=xgb_model, callbacks=callbacks)\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36m_train_internal\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)\u001b[0m\n\u001b[0;32m     72\u001b[0m         \u001b[1;31m# Skip the first update if it is a recovery step.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mversion\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 74\u001b[1;33m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     75\u001b[0m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave_rabit_checkpoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     76\u001b[0m             \u001b[0mversion\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\core.py\u001b[0m in \u001b[0;36mupdate\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m   1108\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mfobj\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1109\u001b[0m             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, ctypes.c_int(iteration),\n\u001b[1;32m-> 1110\u001b[1;33m                                                     dtrain.handle))\n\u001b[0m\u001b[0;32m   1111\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1112\u001b[0m             \u001b[0mpred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "param_test3 = {\n",
    " 'eta': [0.08,0.1,0,12,0,15,0,2],\n",
    "}\n",
    "\n",
    "nums_round = 492\n",
    "gsearch3 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n",
    "                        param_grid = param_test3,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n",
    "gsearch3.fit(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'GridSearchCV' object has no attribute 'best_params_'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-26-881aa0edd986>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgsearch3\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_params_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m: 'GridSearchCV' object has no attribute 'best_params_'"
     ]
    }
   ],
   "source": [
    "print(gsearch3.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py:643: DeprecationWarning: \"fit_params\" as a constructor argument was deprecated in version 0.19 and will be removed in version 0.21. Pass fit parameters to the \"fit\" method instead.\n",
      "  '\"fit\" method instead.', DeprecationWarning)\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 5 candidates, totalling 15 fits\n",
      "[CV] gamma=0.0 .......................................................\n",
      "[0]\tvalidation_0-rmse:7.44332\tvalidation_1-rmse:7.43878\tvalidation_0-rmspe:0.999496\tvalidation_1-rmspe:0.999476\n",
      "Multiple eval metrics have been passed: 'validation_1-rmspe' will be used for early stopping.\n",
      "\n",
      "Will train until validation_1-rmspe hasn't improved in 20 rounds.\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-27-be5e3597db07>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m gsearch4 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n\u001b[0;32m      7\u001b[0m                         param_grid = param_test4,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mgsearch4\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[0;32m    720\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    721\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 722\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    723\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    724\u001b[0m         \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresults_container\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36m_run_search\u001b[1;34m(self, evaluate_candidates)\u001b[0m\n\u001b[0;32m   1189\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_run_search\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1190\u001b[0m         \u001b[1;34m\"\"\"Search all candidates in param_grid\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1191\u001b[1;33m         \u001b[0mevaluate_candidates\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mParameterGrid\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparam_grid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1192\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1193\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_search.py\u001b[0m in \u001b[0;36mevaluate_candidates\u001b[1;34m(candidate_params)\u001b[0m\n\u001b[0;32m    709\u001b[0m                                \u001b[1;32mfor\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    710\u001b[0m                                in product(candidate_params,\n\u001b[1;32m--> 711\u001b[1;33m                                           cv.split(X, y, groups)))\n\u001b[0m\u001b[0;32m    712\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    713\u001b[0m                 \u001b[0mall_candidate_params\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcandidate_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m    915\u001b[0m             \u001b[1;31m# remaining jobs.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    916\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 917\u001b[1;33m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdispatch_one_batch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    918\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterating\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_original_iterator\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    919\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36mdispatch_one_batch\u001b[1;34m(self, iterator)\u001b[0m\n\u001b[0;32m    757\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    758\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 759\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    760\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    761\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m_dispatch\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    714\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    715\u001b[0m             \u001b[0mjob_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 716\u001b[1;33m             \u001b[0mjob\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    717\u001b[0m             \u001b[1;31m# A job can complete so quickly than its callback is\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    718\u001b[0m             \u001b[1;31m# called before we get here, causing self._jobs to\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36mapply_async\u001b[1;34m(self, func, callback)\u001b[0m\n\u001b[0;32m    180\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mapply_async\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    181\u001b[0m         \u001b[1;34m\"\"\"Schedule a func to be run\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 182\u001b[1;33m         \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mImmediateResult\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    183\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    184\u001b[0m             \u001b[0mcallback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\_parallel_backends.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, batch)\u001b[0m\n\u001b[0;32m    547\u001b[0m         \u001b[1;31m# Don't delay the application, to avoid keeping the input\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    548\u001b[0m         \u001b[1;31m# arguments in memory\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 549\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    550\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    551\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\externals\\joblib\\parallel.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m    223\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mparallel_backend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_backend\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn_jobs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_n_jobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m             return [func(*args, **kwargs)\n\u001b[1;32m--> 225\u001b[1;33m                     for func, args, kwargs in self.items]\n\u001b[0m\u001b[0;32m    226\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    227\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\u001b[0m in \u001b[0;36m_fit_and_score\u001b[1;34m(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, error_score)\u001b[0m\n\u001b[0;32m    526\u001b[0m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    527\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 528\u001b[1;33m             \u001b[0mestimator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    529\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    530\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\sklearn.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, callbacks)\u001b[0m\n\u001b[0;32m    376\u001b[0m                               \u001b[0mevals_result\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals_result\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    377\u001b[0m                               \u001b[0mverbose_eval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mverbose\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxgb_model\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxgb_model\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 378\u001b[1;33m                               callbacks=callbacks)\n\u001b[0m\u001b[0;32m    379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    380\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mevals_result\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, learning_rates)\u001b[0m\n\u001b[0;32m    214\u001b[0m                            \u001b[0mevals\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mevals\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m                            \u001b[0mobj\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfeval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                            xgb_model=xgb_model, callbacks=callbacks)\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\training.py\u001b[0m in \u001b[0;36m_train_internal\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)\u001b[0m\n\u001b[0;32m     72\u001b[0m         \u001b[1;31m# Skip the first update if it is a recovery step.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mversion\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 74\u001b[1;33m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     75\u001b[0m             \u001b[0mbst\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave_rabit_checkpoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     76\u001b[0m             \u001b[0mversion\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\AnaconDA\\lib\\site-packages\\xgboost\\core.py\u001b[0m in \u001b[0;36mupdate\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m   1108\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mfobj\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1109\u001b[0m             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, ctypes.c_int(iteration),\n\u001b[1;32m-> 1110\u001b[1;33m                                                     dtrain.handle))\n\u001b[0m\u001b[0;32m   1111\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1112\u001b[0m             \u001b[0mpred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtrain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "param_test4 = {\n",
    " 'gamma':[i/10.0 for i in range(0,5)]\n",
    "}\n",
    "\n",
    "nums_round = 492\n",
    "gsearch4 = GridSearchCV(estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, n_estimators=nums_round,subsample=0.8,colsample_bytree=0.8,nthread=4,scale_pos_weight=1),\n",
    "                        param_grid = param_test4,verbose=2,scoring=make_scorer(customer_rmspe_xg,greater_is_better=False),fit_params = params_fit)\n",
    "gsearch4.fit(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'GridSearchCV' object has no attribute 'best_params_'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-28-fd1f699a1b7f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgsearch4\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbest_params_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m: 'GridSearchCV' object has no attribute 'best_params_'"
     ]
    }
   ],
   "source": [
    "print(gsearch4.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\tvalidation_0-rmse:7.44335\tvalidation_1-rmse:7.4389\tvalidation_0-rmspe:0.999495\tvalidation_1-rmspe:0.999475\n",
      "[1]\tvalidation_0-rmse:6.70119\tvalidation_1-rmse:6.69701\tvalidation_0-rmspe:0.998787\tvalidation_1-rmspe:0.998764\n",
      "[2]\tvalidation_0-rmse:6.03301\tvalidation_1-rmse:6.02921\tvalidation_0-rmspe:0.997513\tvalidation_1-rmspe:0.997486\n",
      "[3]\tvalidation_0-rmse:5.43198\tvalidation_1-rmse:5.42842\tvalidation_0-rmspe:0.995363\tvalidation_1-rmspe:0.995329\n",
      "[4]\tvalidation_0-rmse:4.89113\tvalidation_1-rmse:4.88789\tvalidation_0-rmspe:0.991965\tvalidation_1-rmspe:0.991921\n",
      "[5]\tvalidation_0-rmse:4.40453\tvalidation_1-rmse:4.40177\tvalidation_0-rmspe:0.986877\tvalidation_1-rmspe:0.986824\n",
      "[6]\tvalidation_0-rmse:3.96673\tvalidation_1-rmse:3.96414\tvalidation_0-rmspe:0.979652\tvalidation_1-rmspe:0.979584\n",
      "[7]\tvalidation_0-rmse:3.57283\tvalidation_1-rmse:3.57065\tvalidation_0-rmspe:0.969861\tvalidation_1-rmspe:0.96978\n",
      "[8]\tvalidation_0-rmse:3.21825\tvalidation_1-rmse:3.21618\tvalidation_0-rmspe:0.957137\tvalidation_1-rmspe:0.957036\n",
      "[9]\tvalidation_0-rmse:2.89947\tvalidation_1-rmse:2.89785\tvalidation_0-rmspe:0.941178\tvalidation_1-rmspe:0.941061\n",
      "[10]\tvalidation_0-rmse:2.6126\tvalidation_1-rmse:2.6111\tvalidation_0-rmspe:0.921841\tvalidation_1-rmspe:0.921693\n",
      "[11]\tvalidation_0-rmse:2.35481\tvalidation_1-rmse:2.35338\tvalidation_0-rmspe:0.899071\tvalidation_1-rmspe:0.89886\n",
      "[12]\tvalidation_0-rmse:2.12275\tvalidation_1-rmse:2.12159\tvalidation_0-rmspe:0.873101\tvalidation_1-rmspe:0.872825\n",
      "[13]\tvalidation_0-rmse:1.91466\tvalidation_1-rmse:1.91357\tvalidation_0-rmspe:0.843975\tvalidation_1-rmspe:0.843585\n",
      "[14]\tvalidation_0-rmse:1.72763\tvalidation_1-rmse:1.72672\tvalidation_0-rmspe:0.812206\tvalidation_1-rmspe:0.811678\n",
      "[15]\tvalidation_0-rmse:1.55978\tvalidation_1-rmse:1.55893\tvalidation_0-rmspe:0.778251\tvalidation_1-rmspe:0.777516\n",
      "[16]\tvalidation_0-rmse:1.40927\tvalidation_1-rmse:1.40858\tvalidation_0-rmspe:0.742616\tvalidation_1-rmspe:0.741612\n",
      "[17]\tvalidation_0-rmse:1.27361\tvalidation_1-rmse:1.27323\tvalidation_0-rmspe:0.706062\tvalidation_1-rmspe:0.704761\n",
      "[18]\tvalidation_0-rmse:1.15205\tvalidation_1-rmse:1.15179\tvalidation_0-rmspe:0.668879\tvalidation_1-rmspe:0.667201\n",
      "[19]\tvalidation_0-rmse:1.04351\tvalidation_1-rmse:1.04346\tvalidation_0-rmspe:0.631577\tvalidation_1-rmspe:0.629488\n",
      "[20]\tvalidation_0-rmse:0.945552\tvalidation_1-rmse:0.945714\tvalidation_0-rmspe:0.595008\tvalidation_1-rmspe:0.592267\n",
      "[21]\tvalidation_0-rmse:0.858617\tvalidation_1-rmse:0.859083\tvalidation_0-rmspe:0.55938\tvalidation_1-rmspe:0.555891\n",
      "[22]\tvalidation_0-rmse:0.780966\tvalidation_1-rmse:0.781656\tvalidation_0-rmspe:0.525195\tvalidation_1-rmspe:0.520785\n",
      "[23]\tvalidation_0-rmse:0.71207\tvalidation_1-rmse:0.713018\tvalidation_0-rmspe:0.492736\tvalidation_1-rmspe:0.487304\n",
      "[24]\tvalidation_0-rmse:0.650161\tvalidation_1-rmse:0.651253\tvalidation_0-rmspe:0.462004\tvalidation_1-rmspe:0.455622\n",
      "[25]\tvalidation_0-rmse:0.594793\tvalidation_1-rmse:0.596229\tvalidation_0-rmspe:0.433655\tvalidation_1-rmspe:0.425996\n",
      "[26]\tvalidation_0-rmse:0.545443\tvalidation_1-rmse:0.546994\tvalidation_0-rmspe:0.407593\tvalidation_1-rmspe:0.398385\n",
      "[27]\tvalidation_0-rmse:0.501448\tvalidation_1-rmse:0.503271\tvalidation_0-rmspe:0.383764\tvalidation_1-rmspe:0.372907\n",
      "[28]\tvalidation_0-rmse:0.460973\tvalidation_1-rmse:0.462973\tvalidation_0-rmspe:0.361714\tvalidation_1-rmspe:0.34881\n",
      "[29]\tvalidation_0-rmse:0.426678\tvalidation_1-rmse:0.429004\tvalidation_0-rmspe:0.342471\tvalidation_1-rmspe:0.327679\n",
      "[30]\tvalidation_0-rmse:0.39766\tvalidation_1-rmse:0.400282\tvalidation_0-rmspe:0.326169\tvalidation_1-rmspe:0.30948\n",
      "[31]\tvalidation_0-rmse:0.37074\tvalidation_1-rmse:0.37351\tvalidation_0-rmspe:0.311234\tvalidation_1-rmspe:0.292434\n",
      "[32]\tvalidation_0-rmse:0.34713\tvalidation_1-rmse:0.350134\tvalidation_0-rmspe:0.298438\tvalidation_1-rmspe:0.277292\n",
      "[33]\tvalidation_0-rmse:0.326086\tvalidation_1-rmse:0.329402\tvalidation_0-rmspe:0.287005\tvalidation_1-rmspe:0.263946\n",
      "[34]\tvalidation_0-rmse:0.308193\tvalidation_1-rmse:0.311823\tvalidation_0-rmspe:0.277741\tvalidation_1-rmspe:0.252689\n",
      "[35]\tvalidation_0-rmse:0.293808\tvalidation_1-rmse:0.297727\tvalidation_0-rmspe:0.270712\tvalidation_1-rmspe:0.243937\n",
      "[36]\tvalidation_0-rmse:0.280352\tvalidation_1-rmse:0.284546\tvalidation_0-rmspe:0.264168\tvalidation_1-rmspe:0.235611\n",
      "[37]\tvalidation_0-rmse:0.270016\tvalidation_1-rmse:0.274498\tvalidation_0-rmspe:0.25986\tvalidation_1-rmspe:0.229893\n",
      "[38]\tvalidation_0-rmse:0.261248\tvalidation_1-rmse:0.266085\tvalidation_0-rmspe:0.256446\tvalidation_1-rmspe:0.225357\n",
      "[39]\tvalidation_0-rmse:0.252979\tvalidation_1-rmse:0.258063\tvalidation_0-rmspe:0.253348\tvalidation_1-rmspe:0.220945\n",
      "[40]\tvalidation_0-rmse:0.244877\tvalidation_1-rmse:0.250193\tvalidation_0-rmspe:0.249618\tvalidation_1-rmspe:0.216267\n",
      "[41]\tvalidation_0-rmse:0.236077\tvalidation_1-rmse:0.241545\tvalidation_0-rmspe:0.245339\tvalidation_1-rmspe:0.210259\n",
      "[42]\tvalidation_0-rmse:0.230871\tvalidation_1-rmse:0.236621\tvalidation_0-rmspe:0.243674\tvalidation_1-rmspe:0.20783\n",
      "[43]\tvalidation_0-rmse:0.226555\tvalidation_1-rmse:0.23263\tvalidation_0-rmspe:0.242612\tvalidation_1-rmspe:0.20618\n",
      "[44]\tvalidation_0-rmse:0.223206\tvalidation_1-rmse:0.229522\tvalidation_0-rmspe:0.24232\tvalidation_1-rmspe:0.205238\n",
      "[45]\tvalidation_0-rmse:0.218162\tvalidation_1-rmse:0.224598\tvalidation_0-rmspe:0.24033\tvalidation_1-rmspe:0.202083\n",
      "[46]\tvalidation_0-rmse:0.215149\tvalidation_1-rmse:0.221749\tvalidation_0-rmspe:0.239827\tvalidation_1-rmspe:0.201092\n",
      "[47]\tvalidation_0-rmse:0.213171\tvalidation_1-rmse:0.219951\tvalidation_0-rmspe:0.239946\tvalidation_1-rmspe:0.20081\n",
      "[48]\tvalidation_0-rmse:0.210691\tvalidation_1-rmse:0.217732\tvalidation_0-rmspe:0.239363\tvalidation_1-rmspe:0.199877\n",
      "[49]\tvalidation_0-rmse:0.206414\tvalidation_1-rmse:0.213616\tvalidation_0-rmspe:0.237392\tvalidation_1-rmspe:0.19671\n",
      "[50]\tvalidation_0-rmse:0.204308\tvalidation_1-rmse:0.211659\tvalidation_0-rmspe:0.236704\tvalidation_1-rmspe:0.195708\n",
      "[51]\tvalidation_0-rmse:0.201067\tvalidation_1-rmse:0.208868\tvalidation_0-rmspe:0.234886\tvalidation_1-rmspe:0.193536\n",
      "[52]\tvalidation_0-rmse:0.200082\tvalidation_1-rmse:0.207997\tvalidation_0-rmspe:0.234849\tvalidation_1-rmspe:0.193474\n",
      "[53]\tvalidation_0-rmse:0.196785\tvalidation_1-rmse:0.204841\tvalidation_0-rmspe:0.233112\tvalidation_1-rmspe:0.190748\n",
      "[54]\tvalidation_0-rmse:0.195413\tvalidation_1-rmse:0.203569\tvalidation_0-rmspe:0.232796\tvalidation_1-rmspe:0.190066\n",
      "[55]\tvalidation_0-rmse:0.192819\tvalidation_1-rmse:0.20116\tvalidation_0-rmspe:0.231127\tvalidation_1-rmspe:0.187945\n",
      "[56]\tvalidation_0-rmse:0.190048\tvalidation_1-rmse:0.198586\tvalidation_0-rmspe:0.229459\tvalidation_1-rmspe:0.185681\n",
      "[57]\tvalidation_0-rmse:0.188766\tvalidation_1-rmse:0.197427\tvalidation_0-rmspe:0.227556\tvalidation_1-rmspe:0.184987\n",
      "[58]\tvalidation_0-rmse:0.187581\tvalidation_1-rmse:0.196478\tvalidation_0-rmspe:0.227159\tvalidation_1-rmspe:0.184378\n",
      "[59]\tvalidation_0-rmse:0.186533\tvalidation_1-rmse:0.195542\tvalidation_0-rmspe:0.22669\tvalidation_1-rmspe:0.183714\n",
      "[60]\tvalidation_0-rmse:0.183985\tvalidation_1-rmse:0.193181\tvalidation_0-rmspe:0.225078\tvalidation_1-rmspe:0.18135\n",
      "[61]\tvalidation_0-rmse:0.18217\tvalidation_1-rmse:0.191485\tvalidation_0-rmspe:0.223892\tvalidation_1-rmspe:0.17979\n",
      "[62]\tvalidation_0-rmse:0.181311\tvalidation_1-rmse:0.190839\tvalidation_0-rmspe:0.218123\tvalidation_1-rmspe:0.179356\n",
      "[63]\tvalidation_0-rmse:0.180764\tvalidation_1-rmse:0.190443\tvalidation_0-rmspe:0.217735\tvalidation_1-rmspe:0.17918\n",
      "[64]\tvalidation_0-rmse:0.178575\tvalidation_1-rmse:0.188318\tvalidation_0-rmspe:0.216157\tvalidation_1-rmspe:0.176991\n",
      "[65]\tvalidation_0-rmse:0.176241\tvalidation_1-rmse:0.186093\tvalidation_0-rmspe:0.214093\tvalidation_1-rmspe:0.174658\n",
      "[66]\tvalidation_0-rmse:0.175424\tvalidation_1-rmse:0.185336\tvalidation_0-rmspe:0.21099\tvalidation_1-rmspe:0.174076\n",
      "[67]\tvalidation_0-rmse:0.172957\tvalidation_1-rmse:0.183088\tvalidation_0-rmspe:0.20849\tvalidation_1-rmspe:0.171398\n",
      "[68]\tvalidation_0-rmse:0.172663\tvalidation_1-rmse:0.182867\tvalidation_0-rmspe:0.208327\tvalidation_1-rmspe:0.17127\n",
      "[69]\tvalidation_0-rmse:0.171005\tvalidation_1-rmse:0.181252\tvalidation_0-rmspe:0.207043\tvalidation_1-rmspe:0.169391\n",
      "[70]\tvalidation_0-rmse:0.169611\tvalidation_1-rmse:0.179971\tvalidation_0-rmspe:0.206\tvalidation_1-rmspe:0.167992\n",
      "[71]\tvalidation_0-rmse:0.169018\tvalidation_1-rmse:0.179517\tvalidation_0-rmspe:0.205693\tvalidation_1-rmspe:0.167622\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[72]\tvalidation_0-rmse:0.167279\tvalidation_1-rmse:0.177848\tvalidation_0-rmspe:0.204328\tvalidation_1-rmspe:0.165796\n",
      "[73]\tvalidation_0-rmse:0.166779\tvalidation_1-rmse:0.177594\tvalidation_0-rmspe:0.204039\tvalidation_1-rmspe:0.165544\n",
      "[74]\tvalidation_0-rmse:0.166552\tvalidation_1-rmse:0.177358\tvalidation_0-rmspe:0.204113\tvalidation_1-rmspe:0.165358\n",
      "[75]\tvalidation_0-rmse:0.165604\tvalidation_1-rmse:0.176455\tvalidation_0-rmspe:0.203337\tvalidation_1-rmspe:0.164475\n",
      "[76]\tvalidation_0-rmse:0.165141\tvalidation_1-rmse:0.176112\tvalidation_0-rmspe:0.203021\tvalidation_1-rmspe:0.164175\n",
      "[77]\tvalidation_0-rmse:0.164809\tvalidation_1-rmse:0.175863\tvalidation_0-rmspe:0.202555\tvalidation_1-rmspe:0.163985\n",
      "[78]\tvalidation_0-rmse:0.164373\tvalidation_1-rmse:0.175466\tvalidation_0-rmspe:0.202136\tvalidation_1-rmspe:0.163562\n",
      "[79]\tvalidation_0-rmse:0.163571\tvalidation_1-rmse:0.17486\tvalidation_0-rmspe:0.201517\tvalidation_1-rmspe:0.162934\n",
      "[80]\tvalidation_0-rmse:0.161807\tvalidation_1-rmse:0.173228\tvalidation_0-rmspe:0.199789\tvalidation_1-rmspe:0.16103\n",
      "[81]\tvalidation_0-rmse:0.161308\tvalidation_1-rmse:0.172913\tvalidation_0-rmspe:0.198899\tvalidation_1-rmspe:0.160614\n",
      "[82]\tvalidation_0-rmse:0.160016\tvalidation_1-rmse:0.171717\tvalidation_0-rmspe:0.197781\tvalidation_1-rmspe:0.159165\n",
      "[83]\tvalidation_0-rmse:0.15903\tvalidation_1-rmse:0.170721\tvalidation_0-rmspe:0.196951\tvalidation_1-rmspe:0.157961\n",
      "[84]\tvalidation_0-rmse:0.157665\tvalidation_1-rmse:0.169453\tvalidation_0-rmspe:0.195719\tvalidation_1-rmspe:0.156499\n",
      "[85]\tvalidation_0-rmse:0.157409\tvalidation_1-rmse:0.169256\tvalidation_0-rmspe:0.195411\tvalidation_1-rmspe:0.156238\n",
      "[86]\tvalidation_0-rmse:0.156614\tvalidation_1-rmse:0.168513\tvalidation_0-rmspe:0.194767\tvalidation_1-rmspe:0.155425\n",
      "[87]\tvalidation_0-rmse:0.155555\tvalidation_1-rmse:0.167485\tvalidation_0-rmspe:0.193639\tvalidation_1-rmspe:0.154114\n",
      "[88]\tvalidation_0-rmse:0.155235\tvalidation_1-rmse:0.167272\tvalidation_0-rmspe:0.193198\tvalidation_1-rmspe:0.153859\n",
      "[89]\tvalidation_0-rmse:0.154287\tvalidation_1-rmse:0.166397\tvalidation_0-rmspe:0.191991\tvalidation_1-rmspe:0.152674\n",
      "[90]\tvalidation_0-rmse:0.153221\tvalidation_1-rmse:0.165534\tvalidation_0-rmspe:0.190788\tvalidation_1-rmspe:0.151576\n",
      "[91]\tvalidation_0-rmse:0.1524\tvalidation_1-rmse:0.164792\tvalidation_0-rmspe:0.190091\tvalidation_1-rmspe:0.150781\n",
      "[92]\tvalidation_0-rmse:0.152151\tvalidation_1-rmse:0.164632\tvalidation_0-rmspe:0.189899\tvalidation_1-rmspe:0.150628\n",
      "[93]\tvalidation_0-rmse:0.151844\tvalidation_1-rmse:0.164424\tvalidation_0-rmspe:0.18957\tvalidation_1-rmspe:0.150378\n",
      "[94]\tvalidation_0-rmse:0.150963\tvalidation_1-rmse:0.163583\tvalidation_0-rmspe:0.188832\tvalidation_1-rmspe:0.149423\n",
      "[95]\tvalidation_0-rmse:0.150356\tvalidation_1-rmse:0.16303\tvalidation_0-rmspe:0.188306\tvalidation_1-rmspe:0.148855\n",
      "[96]\tvalidation_0-rmse:0.149142\tvalidation_1-rmse:0.161964\tvalidation_0-rmspe:0.186953\tvalidation_1-rmspe:0.147534\n",
      "[97]\tvalidation_0-rmse:0.14826\tvalidation_1-rmse:0.161192\tvalidation_0-rmspe:0.18613\tvalidation_1-rmspe:0.14661\n",
      "[98]\tvalidation_0-rmse:0.147675\tvalidation_1-rmse:0.160644\tvalidation_0-rmspe:0.185639\tvalidation_1-rmspe:0.14596\n",
      "[99]\tvalidation_0-rmse:0.147114\tvalidation_1-rmse:0.160197\tvalidation_0-rmspe:0.185217\tvalidation_1-rmspe:0.145409\n",
      "[100]\tvalidation_0-rmse:0.146909\tvalidation_1-rmse:0.160001\tvalidation_0-rmspe:0.183942\tvalidation_1-rmspe:0.145119\n",
      "[101]\tvalidation_0-rmse:0.146806\tvalidation_1-rmse:0.159947\tvalidation_0-rmspe:0.183881\tvalidation_1-rmspe:0.145061\n",
      "[102]\tvalidation_0-rmse:0.146194\tvalidation_1-rmse:0.159361\tvalidation_0-rmspe:0.183332\tvalidation_1-rmspe:0.144308\n",
      "[103]\tvalidation_0-rmse:0.145514\tvalidation_1-rmse:0.158671\tvalidation_0-rmspe:0.182774\tvalidation_1-rmspe:0.143477\n",
      "[104]\tvalidation_0-rmse:0.14526\tvalidation_1-rmse:0.158392\tvalidation_0-rmspe:0.18248\tvalidation_1-rmspe:0.14319\n",
      "[105]\tvalidation_0-rmse:0.145089\tvalidation_1-rmse:0.158235\tvalidation_0-rmspe:0.182272\tvalidation_1-rmspe:0.143014\n",
      "[106]\tvalidation_0-rmse:0.143993\tvalidation_1-rmse:0.157267\tvalidation_0-rmspe:0.181301\tvalidation_1-rmspe:0.141825\n",
      "[107]\tvalidation_0-rmse:0.143804\tvalidation_1-rmse:0.157319\tvalidation_0-rmspe:0.181209\tvalidation_1-rmspe:0.141732\n",
      "[108]\tvalidation_0-rmse:0.143312\tvalidation_1-rmse:0.156987\tvalidation_0-rmspe:0.18076\tvalidation_1-rmspe:0.141277\n",
      "[109]\tvalidation_0-rmse:0.142377\tvalidation_1-rmse:0.156192\tvalidation_0-rmspe:0.179942\tvalidation_1-rmspe:0.140233\n",
      "[110]\tvalidation_0-rmse:0.141624\tvalidation_1-rmse:0.155492\tvalidation_0-rmspe:0.179267\tvalidation_1-rmspe:0.139369\n",
      "[111]\tvalidation_0-rmse:0.141424\tvalidation_1-rmse:0.15538\tvalidation_0-rmspe:0.179012\tvalidation_1-rmspe:0.139227\n",
      "[112]\tvalidation_0-rmse:0.14098\tvalidation_1-rmse:0.154983\tvalidation_0-rmspe:0.178584\tvalidation_1-rmspe:0.138713\n",
      "[113]\tvalidation_0-rmse:0.140846\tvalidation_1-rmse:0.154923\tvalidation_0-rmspe:0.178434\tvalidation_1-rmspe:0.138656\n",
      "[114]\tvalidation_0-rmse:0.140641\tvalidation_1-rmse:0.154829\tvalidation_0-rmspe:0.178241\tvalidation_1-rmspe:0.138505\n",
      "[115]\tvalidation_0-rmse:0.140429\tvalidation_1-rmse:0.154685\tvalidation_0-rmspe:0.178109\tvalidation_1-rmspe:0.138348\n",
      "[116]\tvalidation_0-rmse:0.140313\tvalidation_1-rmse:0.1546\tvalidation_0-rmspe:0.178042\tvalidation_1-rmspe:0.138277\n",
      "[117]\tvalidation_0-rmse:0.13965\tvalidation_1-rmse:0.154016\tvalidation_0-rmspe:0.177362\tvalidation_1-rmspe:0.137546\n",
      "[118]\tvalidation_0-rmse:0.138871\tvalidation_1-rmse:0.153431\tvalidation_0-rmspe:0.176343\tvalidation_1-rmspe:0.13683\n",
      "[119]\tvalidation_0-rmse:0.138292\tvalidation_1-rmse:0.152956\tvalidation_0-rmspe:0.166868\tvalidation_1-rmspe:0.136228\n",
      "[120]\tvalidation_0-rmse:0.137746\tvalidation_1-rmse:0.152481\tvalidation_0-rmspe:0.166383\tvalidation_1-rmspe:0.135689\n",
      "[121]\tvalidation_0-rmse:0.137178\tvalidation_1-rmse:0.152056\tvalidation_0-rmspe:0.16598\tvalidation_1-rmspe:0.135168\n",
      "[122]\tvalidation_0-rmse:0.136822\tvalidation_1-rmse:0.151752\tvalidation_0-rmspe:0.165662\tvalidation_1-rmspe:0.134787\n",
      "[123]\tvalidation_0-rmse:0.136708\tvalidation_1-rmse:0.151646\tvalidation_0-rmspe:0.165603\tvalidation_1-rmspe:0.13464\n",
      "[124]\tvalidation_0-rmse:0.136573\tvalidation_1-rmse:0.151527\tvalidation_0-rmspe:0.165364\tvalidation_1-rmspe:0.134501\n",
      "[125]\tvalidation_0-rmse:0.136035\tvalidation_1-rmse:0.151077\tvalidation_0-rmspe:0.164019\tvalidation_1-rmspe:0.133969\n",
      "[126]\tvalidation_0-rmse:0.135823\tvalidation_1-rmse:0.150877\tvalidation_0-rmspe:0.163868\tvalidation_1-rmspe:0.133731\n",
      "[127]\tvalidation_0-rmse:0.135685\tvalidation_1-rmse:0.150764\tvalidation_0-rmspe:0.163734\tvalidation_1-rmspe:0.133591\n",
      "[128]\tvalidation_0-rmse:0.135206\tvalidation_1-rmse:0.150593\tvalidation_0-rmspe:0.163408\tvalidation_1-rmspe:0.133381\n",
      "[129]\tvalidation_0-rmse:0.135096\tvalidation_1-rmse:0.150536\tvalidation_0-rmspe:0.16329\tvalidation_1-rmspe:0.13332\n",
      "[130]\tvalidation_0-rmse:0.134291\tvalidation_1-rmse:0.149766\tvalidation_0-rmspe:0.162539\tvalidation_1-rmspe:0.132383\n",
      "[131]\tvalidation_0-rmse:0.133584\tvalidation_1-rmse:0.149164\tvalidation_0-rmspe:0.161958\tvalidation_1-rmspe:0.131649\n",
      "[132]\tvalidation_0-rmse:0.133284\tvalidation_1-rmse:0.148904\tvalidation_0-rmspe:0.161625\tvalidation_1-rmspe:0.131304\n",
      "[133]\tvalidation_0-rmse:0.132886\tvalidation_1-rmse:0.148573\tvalidation_0-rmspe:0.161278\tvalidation_1-rmspe:0.130966\n",
      "[134]\tvalidation_0-rmse:0.132698\tvalidation_1-rmse:0.14843\tvalidation_0-rmspe:0.161167\tvalidation_1-rmspe:0.130779\n",
      "[135]\tvalidation_0-rmse:0.132587\tvalidation_1-rmse:0.148385\tvalidation_0-rmspe:0.161115\tvalidation_1-rmspe:0.130739\n",
      "[136]\tvalidation_0-rmse:0.132422\tvalidation_1-rmse:0.148274\tvalidation_0-rmspe:0.160951\tvalidation_1-rmspe:0.130596\n",
      "[137]\tvalidation_0-rmse:0.132395\tvalidation_1-rmse:0.148246\tvalidation_0-rmspe:0.16091\tvalidation_1-rmspe:0.130563\n",
      "[138]\tvalidation_0-rmse:0.131911\tvalidation_1-rmse:0.147821\tvalidation_0-rmspe:0.16042\tvalidation_1-rmspe:0.129977\n",
      "[139]\tvalidation_0-rmse:0.131596\tvalidation_1-rmse:0.14758\tvalidation_0-rmspe:0.1601\tvalidation_1-rmspe:0.12968\n",
      "[140]\tvalidation_0-rmse:0.131326\tvalidation_1-rmse:0.147403\tvalidation_0-rmspe:0.159975\tvalidation_1-rmspe:0.129522\n",
      "[141]\tvalidation_0-rmse:0.131118\tvalidation_1-rmse:0.147316\tvalidation_0-rmspe:0.159814\tvalidation_1-rmspe:0.12941\n",
      "[142]\tvalidation_0-rmse:0.130999\tvalidation_1-rmse:0.147214\tvalidation_0-rmspe:0.159734\tvalidation_1-rmspe:0.129255\n",
      "[143]\tvalidation_0-rmse:0.130756\tvalidation_1-rmse:0.147044\tvalidation_0-rmspe:0.159534\tvalidation_1-rmspe:0.12905\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[144]\tvalidation_0-rmse:0.13046\tvalidation_1-rmse:0.146859\tvalidation_0-rmspe:0.159316\tvalidation_1-rmspe:0.128814\n",
      "[145]\tvalidation_0-rmse:0.13\tvalidation_1-rmse:0.146521\tvalidation_0-rmspe:0.158998\tvalidation_1-rmspe:0.128351\n",
      "[146]\tvalidation_0-rmse:0.129808\tvalidation_1-rmse:0.146358\tvalidation_0-rmspe:0.158823\tvalidation_1-rmspe:0.128139\n",
      "[147]\tvalidation_0-rmse:0.129448\tvalidation_1-rmse:0.146037\tvalidation_0-rmspe:0.158456\tvalidation_1-rmspe:0.127751\n",
      "[148]\tvalidation_0-rmse:0.129348\tvalidation_1-rmse:0.146009\tvalidation_0-rmspe:0.158403\tvalidation_1-rmspe:0.127722\n",
      "[149]\tvalidation_0-rmse:0.128913\tvalidation_1-rmse:0.145597\tvalidation_0-rmspe:0.157958\tvalidation_1-rmspe:0.127264\n",
      "[150]\tvalidation_0-rmse:0.128831\tvalidation_1-rmse:0.145534\tvalidation_0-rmspe:0.157913\tvalidation_1-rmspe:0.127201\n",
      "[151]\tvalidation_0-rmse:0.128666\tvalidation_1-rmse:0.145458\tvalidation_0-rmspe:0.155936\tvalidation_1-rmspe:0.127123\n",
      "[152]\tvalidation_0-rmse:0.128497\tvalidation_1-rmse:0.14539\tvalidation_0-rmspe:0.154941\tvalidation_1-rmspe:0.127059\n",
      "[153]\tvalidation_0-rmse:0.12831\tvalidation_1-rmse:0.145364\tvalidation_0-rmspe:0.15487\tvalidation_1-rmspe:0.12704\n",
      "[154]\tvalidation_0-rmse:0.128146\tvalidation_1-rmse:0.145269\tvalidation_0-rmspe:0.154718\tvalidation_1-rmspe:0.126919\n",
      "[155]\tvalidation_0-rmse:0.127918\tvalidation_1-rmse:0.145179\tvalidation_0-rmspe:0.154573\tvalidation_1-rmspe:0.126807\n",
      "[156]\tvalidation_0-rmse:0.12775\tvalidation_1-rmse:0.145049\tvalidation_0-rmspe:0.154407\tvalidation_1-rmspe:0.126641\n",
      "[157]\tvalidation_0-rmse:0.127433\tvalidation_1-rmse:0.144831\tvalidation_0-rmspe:0.151703\tvalidation_1-rmspe:0.126372\n",
      "[158]\tvalidation_0-rmse:0.127294\tvalidation_1-rmse:0.144789\tvalidation_0-rmspe:0.151641\tvalidation_1-rmspe:0.126313\n",
      "[159]\tvalidation_0-rmse:0.127179\tvalidation_1-rmse:0.144771\tvalidation_0-rmspe:0.151603\tvalidation_1-rmspe:0.126299\n",
      "[160]\tvalidation_0-rmse:0.126968\tvalidation_1-rmse:0.144698\tvalidation_0-rmspe:0.151501\tvalidation_1-rmspe:0.126204\n",
      "[161]\tvalidation_0-rmse:0.126552\tvalidation_1-rmse:0.144393\tvalidation_0-rmspe:0.151138\tvalidation_1-rmspe:0.125844\n",
      "[162]\tvalidation_0-rmse:0.126449\tvalidation_1-rmse:0.14432\tvalidation_0-rmspe:0.150953\tvalidation_1-rmspe:0.125757\n",
      "[163]\tvalidation_0-rmse:0.12611\tvalidation_1-rmse:0.144069\tvalidation_0-rmspe:0.150733\tvalidation_1-rmspe:0.12543\n",
      "[164]\tvalidation_0-rmse:0.125976\tvalidation_1-rmse:0.143969\tvalidation_0-rmspe:0.150583\tvalidation_1-rmspe:0.1253\n",
      "[165]\tvalidation_0-rmse:0.125862\tvalidation_1-rmse:0.143883\tvalidation_0-rmspe:0.150467\tvalidation_1-rmspe:0.125202\n",
      "[166]\tvalidation_0-rmse:0.125777\tvalidation_1-rmse:0.143796\tvalidation_0-rmspe:0.148837\tvalidation_1-rmspe:0.125085\n",
      "[167]\tvalidation_0-rmse:0.125625\tvalidation_1-rmse:0.14372\tvalidation_0-rmspe:0.14855\tvalidation_1-rmspe:0.124988\n",
      "[168]\tvalidation_0-rmse:0.125417\tvalidation_1-rmse:0.143602\tvalidation_0-rmspe:0.148385\tvalidation_1-rmspe:0.124841\n",
      "[169]\tvalidation_0-rmse:0.125228\tvalidation_1-rmse:0.143451\tvalidation_0-rmspe:0.148218\tvalidation_1-rmspe:0.124695\n",
      "[170]\tvalidation_0-rmse:0.125011\tvalidation_1-rmse:0.14324\tvalidation_0-rmspe:0.148031\tvalidation_1-rmspe:0.124495\n",
      "[171]\tvalidation_0-rmse:0.12493\tvalidation_1-rmse:0.143196\tvalidation_0-rmspe:0.147977\tvalidation_1-rmspe:0.124472\n",
      "[172]\tvalidation_0-rmse:0.124849\tvalidation_1-rmse:0.143151\tvalidation_0-rmspe:0.147934\tvalidation_1-rmspe:0.124425\n",
      "[173]\tvalidation_0-rmse:0.124803\tvalidation_1-rmse:0.143107\tvalidation_0-rmspe:0.147894\tvalidation_1-rmspe:0.124369\n",
      "[174]\tvalidation_0-rmse:0.124662\tvalidation_1-rmse:0.143019\tvalidation_0-rmspe:0.147815\tvalidation_1-rmspe:0.124256\n",
      "[175]\tvalidation_0-rmse:0.124587\tvalidation_1-rmse:0.142949\tvalidation_0-rmspe:0.147781\tvalidation_1-rmspe:0.124224\n",
      "[176]\tvalidation_0-rmse:0.124247\tvalidation_1-rmse:0.142844\tvalidation_0-rmspe:0.147527\tvalidation_1-rmspe:0.123956\n",
      "[177]\tvalidation_0-rmse:0.124195\tvalidation_1-rmse:0.142806\tvalidation_0-rmspe:0.147476\tvalidation_1-rmspe:0.123895\n",
      "[178]\tvalidation_0-rmse:0.123973\tvalidation_1-rmse:0.142627\tvalidation_0-rmspe:0.147256\tvalidation_1-rmspe:0.123682\n",
      "[179]\tvalidation_0-rmse:0.123663\tvalidation_1-rmse:0.142453\tvalidation_0-rmspe:0.147027\tvalidation_1-rmspe:0.123463\n",
      "[180]\tvalidation_0-rmse:0.123568\tvalidation_1-rmse:0.142416\tvalidation_0-rmspe:0.146814\tvalidation_1-rmspe:0.123423\n",
      "[181]\tvalidation_0-rmse:0.123414\tvalidation_1-rmse:0.142271\tvalidation_0-rmspe:0.146603\tvalidation_1-rmspe:0.123251\n",
      "[182]\tvalidation_0-rmse:0.123267\tvalidation_1-rmse:0.142187\tvalidation_0-rmspe:0.146497\tvalidation_1-rmspe:0.123145\n",
      "[183]\tvalidation_0-rmse:0.123103\tvalidation_1-rmse:0.142078\tvalidation_0-rmspe:0.146337\tvalidation_1-rmspe:0.123018\n",
      "[184]\tvalidation_0-rmse:0.122915\tvalidation_1-rmse:0.14206\tvalidation_0-rmspe:0.146293\tvalidation_1-rmspe:0.122994\n",
      "[185]\tvalidation_0-rmse:0.122802\tvalidation_1-rmse:0.141977\tvalidation_0-rmspe:0.146134\tvalidation_1-rmspe:0.122908\n",
      "[186]\tvalidation_0-rmse:0.122749\tvalidation_1-rmse:0.141953\tvalidation_0-rmspe:0.146106\tvalidation_1-rmspe:0.122885\n",
      "[187]\tvalidation_0-rmse:0.122426\tvalidation_1-rmse:0.14179\tvalidation_0-rmspe:0.145882\tvalidation_1-rmspe:0.122705\n",
      "[188]\tvalidation_0-rmse:0.12241\tvalidation_1-rmse:0.141787\tvalidation_0-rmspe:0.145868\tvalidation_1-rmspe:0.122709\n",
      "[189]\tvalidation_0-rmse:0.122379\tvalidation_1-rmse:0.141766\tvalidation_0-rmspe:0.145807\tvalidation_1-rmspe:0.122685\n",
      "[190]\tvalidation_0-rmse:0.122262\tvalidation_1-rmse:0.14174\tvalidation_0-rmspe:0.145691\tvalidation_1-rmspe:0.122644\n",
      "[191]\tvalidation_0-rmse:0.122157\tvalidation_1-rmse:0.141667\tvalidation_0-rmspe:0.145606\tvalidation_1-rmspe:0.122556\n",
      "[192]\tvalidation_0-rmse:0.122104\tvalidation_1-rmse:0.141604\tvalidation_0-rmspe:0.145492\tvalidation_1-rmspe:0.122363\n",
      "[193]\tvalidation_0-rmse:0.12205\tvalidation_1-rmse:0.141574\tvalidation_0-rmspe:0.145462\tvalidation_1-rmspe:0.122324\n",
      "[194]\tvalidation_0-rmse:0.121932\tvalidation_1-rmse:0.141495\tvalidation_0-rmspe:0.14533\tvalidation_1-rmspe:0.122245\n",
      "[195]\tvalidation_0-rmse:0.12182\tvalidation_1-rmse:0.141438\tvalidation_0-rmspe:0.145235\tvalidation_1-rmspe:0.12218\n",
      "[196]\tvalidation_0-rmse:0.121768\tvalidation_1-rmse:0.1414\tvalidation_0-rmspe:0.145097\tvalidation_1-rmspe:0.122056\n",
      "[197]\tvalidation_0-rmse:0.121663\tvalidation_1-rmse:0.141412\tvalidation_0-rmspe:0.145054\tvalidation_1-rmspe:0.122036\n",
      "[198]\tvalidation_0-rmse:0.121624\tvalidation_1-rmse:0.141403\tvalidation_0-rmspe:0.145043\tvalidation_1-rmspe:0.122032\n",
      "[199]\tvalidation_0-rmse:0.121445\tvalidation_1-rmse:0.141238\tvalidation_0-rmspe:0.144697\tvalidation_1-rmspe:0.121784\n",
      "[200]\tvalidation_0-rmse:0.12136\tvalidation_1-rmse:0.141167\tvalidation_0-rmspe:0.144618\tvalidation_1-rmspe:0.121706\n",
      "[201]\tvalidation_0-rmse:0.121353\tvalidation_1-rmse:0.141163\tvalidation_0-rmspe:0.144609\tvalidation_1-rmspe:0.121707\n",
      "[202]\tvalidation_0-rmse:0.121166\tvalidation_1-rmse:0.141122\tvalidation_0-rmspe:0.14455\tvalidation_1-rmspe:0.121649\n",
      "[203]\tvalidation_0-rmse:0.121061\tvalidation_1-rmse:0.141071\tvalidation_0-rmspe:0.144335\tvalidation_1-rmspe:0.121584\n",
      "[204]\tvalidation_0-rmse:0.120964\tvalidation_1-rmse:0.141053\tvalidation_0-rmspe:0.144302\tvalidation_1-rmspe:0.121562\n",
      "[205]\tvalidation_0-rmse:0.120945\tvalidation_1-rmse:0.141044\tvalidation_0-rmspe:0.144331\tvalidation_1-rmspe:0.121559\n",
      "[206]\tvalidation_0-rmse:0.120837\tvalidation_1-rmse:0.141018\tvalidation_0-rmspe:0.144251\tvalidation_1-rmspe:0.121533\n",
      "[207]\tvalidation_0-rmse:0.120776\tvalidation_1-rmse:0.140985\tvalidation_0-rmspe:0.144201\tvalidation_1-rmspe:0.121494\n",
      "[208]\tvalidation_0-rmse:0.120642\tvalidation_1-rmse:0.140868\tvalidation_0-rmspe:0.144074\tvalidation_1-rmspe:0.12135\n",
      "[209]\tvalidation_0-rmse:0.120619\tvalidation_1-rmse:0.14086\tvalidation_0-rmspe:0.14404\tvalidation_1-rmspe:0.12134\n",
      "[210]\tvalidation_0-rmse:0.120451\tvalidation_1-rmse:0.140716\tvalidation_0-rmspe:0.143828\tvalidation_1-rmspe:0.121178\n",
      "[211]\tvalidation_0-rmse:0.120329\tvalidation_1-rmse:0.140695\tvalidation_0-rmspe:0.143726\tvalidation_1-rmspe:0.121155\n",
      "[212]\tvalidation_0-rmse:0.120317\tvalidation_1-rmse:0.140681\tvalidation_0-rmspe:0.143713\tvalidation_1-rmspe:0.121136\n",
      "[213]\tvalidation_0-rmse:0.120138\tvalidation_1-rmse:0.140549\tvalidation_0-rmspe:0.143544\tvalidation_1-rmspe:0.12096\n",
      "[214]\tvalidation_0-rmse:0.120021\tvalidation_1-rmse:0.140598\tvalidation_0-rmspe:0.143427\tvalidation_1-rmspe:0.120933\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[215]\tvalidation_0-rmse:0.11997\tvalidation_1-rmse:0.140569\tvalidation_0-rmspe:0.143345\tvalidation_1-rmspe:0.120902\n",
      "[216]\tvalidation_0-rmse:0.119894\tvalidation_1-rmse:0.1405\tvalidation_0-rmspe:0.143251\tvalidation_1-rmspe:0.120845\n",
      "[217]\tvalidation_0-rmse:0.119818\tvalidation_1-rmse:0.140463\tvalidation_0-rmspe:0.143212\tvalidation_1-rmspe:0.120805\n",
      "[218]\tvalidation_0-rmse:0.119778\tvalidation_1-rmse:0.140454\tvalidation_0-rmspe:0.138981\tvalidation_1-rmspe:0.120792\n",
      "[219]\tvalidation_0-rmse:0.11975\tvalidation_1-rmse:0.140449\tvalidation_0-rmspe:0.138963\tvalidation_1-rmspe:0.120785\n",
      "[220]\tvalidation_0-rmse:0.119601\tvalidation_1-rmse:0.140403\tvalidation_0-rmspe:0.138863\tvalidation_1-rmspe:0.120702\n",
      "[221]\tvalidation_0-rmse:0.119565\tvalidation_1-rmse:0.140391\tvalidation_0-rmspe:0.138864\tvalidation_1-rmspe:0.120688\n",
      "[222]\tvalidation_0-rmse:0.119467\tvalidation_1-rmse:0.140328\tvalidation_0-rmspe:0.138814\tvalidation_1-rmspe:0.120594\n",
      "[223]\tvalidation_0-rmse:0.119406\tvalidation_1-rmse:0.140267\tvalidation_0-rmspe:0.138749\tvalidation_1-rmspe:0.120518\n",
      "[224]\tvalidation_0-rmse:0.119326\tvalidation_1-rmse:0.14023\tvalidation_0-rmspe:0.138663\tvalidation_1-rmspe:0.120478\n",
      "[225]\tvalidation_0-rmse:0.119162\tvalidation_1-rmse:0.140149\tvalidation_0-rmspe:0.138554\tvalidation_1-rmspe:0.120406\n",
      "[226]\tvalidation_0-rmse:0.119103\tvalidation_1-rmse:0.140127\tvalidation_0-rmspe:0.138506\tvalidation_1-rmspe:0.120366\n",
      "[227]\tvalidation_0-rmse:0.119076\tvalidation_1-rmse:0.14012\tvalidation_0-rmspe:0.138479\tvalidation_1-rmspe:0.120355\n",
      "[228]\tvalidation_0-rmse:0.119003\tvalidation_1-rmse:0.140063\tvalidation_0-rmspe:0.138424\tvalidation_1-rmspe:0.120314\n",
      "[229]\tvalidation_0-rmse:0.118931\tvalidation_1-rmse:0.140025\tvalidation_0-rmspe:0.138382\tvalidation_1-rmspe:0.120265\n",
      "[230]\tvalidation_0-rmse:0.118918\tvalidation_1-rmse:0.140016\tvalidation_0-rmspe:0.138361\tvalidation_1-rmspe:0.120258\n",
      "[231]\tvalidation_0-rmse:0.118895\tvalidation_1-rmse:0.140007\tvalidation_0-rmspe:0.138347\tvalidation_1-rmspe:0.120254\n",
      "[232]\tvalidation_0-rmse:0.118842\tvalidation_1-rmse:0.140058\tvalidation_0-rmspe:0.138307\tvalidation_1-rmspe:0.120242\n",
      "[233]\tvalidation_0-rmse:0.118773\tvalidation_1-rmse:0.139995\tvalidation_0-rmspe:0.138246\tvalidation_1-rmspe:0.120162\n",
      "[234]\tvalidation_0-rmse:0.118716\tvalidation_1-rmse:0.139967\tvalidation_0-rmspe:0.138192\tvalidation_1-rmspe:0.120136\n",
      "[235]\tvalidation_0-rmse:0.118688\tvalidation_1-rmse:0.139952\tvalidation_0-rmspe:0.138367\tvalidation_1-rmspe:0.120125\n",
      "[236]\tvalidation_0-rmse:0.118673\tvalidation_1-rmse:0.139941\tvalidation_0-rmspe:0.138383\tvalidation_1-rmspe:0.120112\n",
      "[237]\tvalidation_0-rmse:0.118661\tvalidation_1-rmse:0.13994\tvalidation_0-rmspe:0.13838\tvalidation_1-rmspe:0.120113\n",
      "[238]\tvalidation_0-rmse:0.118635\tvalidation_1-rmse:0.139932\tvalidation_0-rmspe:0.13854\tvalidation_1-rmspe:0.120112\n",
      "[239]\tvalidation_0-rmse:0.118589\tvalidation_1-rmse:0.139913\tvalidation_0-rmspe:0.138481\tvalidation_1-rmspe:0.120068\n",
      "[240]\tvalidation_0-rmse:0.118536\tvalidation_1-rmse:0.139876\tvalidation_0-rmspe:0.138419\tvalidation_1-rmspe:0.120015\n",
      "[241]\tvalidation_0-rmse:0.118473\tvalidation_1-rmse:0.139855\tvalidation_0-rmspe:0.138329\tvalidation_1-rmspe:0.11999\n",
      "[242]\tvalidation_0-rmse:0.118432\tvalidation_1-rmse:0.139823\tvalidation_0-rmspe:0.138286\tvalidation_1-rmspe:0.119945\n",
      "[243]\tvalidation_0-rmse:0.118385\tvalidation_1-rmse:0.139822\tvalidation_0-rmspe:0.138272\tvalidation_1-rmspe:0.119951\n",
      "[244]\tvalidation_0-rmse:0.118279\tvalidation_1-rmse:0.139801\tvalidation_0-rmspe:0.138231\tvalidation_1-rmspe:0.119945\n",
      "[245]\tvalidation_0-rmse:0.118162\tvalidation_1-rmse:0.13976\tvalidation_0-rmspe:0.138124\tvalidation_1-rmspe:0.119889\n",
      "[246]\tvalidation_0-rmse:0.118123\tvalidation_1-rmse:0.139746\tvalidation_0-rmspe:0.138109\tvalidation_1-rmspe:0.119881\n",
      "[247]\tvalidation_0-rmse:0.118087\tvalidation_1-rmse:0.139734\tvalidation_0-rmspe:0.138105\tvalidation_1-rmspe:0.119868\n",
      "[248]\tvalidation_0-rmse:0.118007\tvalidation_1-rmse:0.139667\tvalidation_0-rmspe:0.137685\tvalidation_1-rmspe:0.119775\n",
      "[249]\tvalidation_0-rmse:0.117962\tvalidation_1-rmse:0.139667\tvalidation_0-rmspe:0.137669\tvalidation_1-rmspe:0.11977\n",
      "[250]\tvalidation_0-rmse:0.117791\tvalidation_1-rmse:0.139575\tvalidation_0-rmspe:0.13756\tvalidation_1-rmspe:0.11968\n",
      "[251]\tvalidation_0-rmse:0.117765\tvalidation_1-rmse:0.139552\tvalidation_0-rmspe:0.137668\tvalidation_1-rmspe:0.11966\n",
      "[252]\tvalidation_0-rmse:0.117737\tvalidation_1-rmse:0.139538\tvalidation_0-rmspe:0.137643\tvalidation_1-rmspe:0.119639\n",
      "[253]\tvalidation_0-rmse:0.117724\tvalidation_1-rmse:0.139534\tvalidation_0-rmspe:0.137635\tvalidation_1-rmspe:0.119637\n",
      "[254]\tvalidation_0-rmse:0.117612\tvalidation_1-rmse:0.139447\tvalidation_0-rmspe:0.137555\tvalidation_1-rmspe:0.119542\n",
      "[255]\tvalidation_0-rmse:0.117551\tvalidation_1-rmse:0.139409\tvalidation_0-rmspe:0.137481\tvalidation_1-rmspe:0.119492\n",
      "[256]\tvalidation_0-rmse:0.117501\tvalidation_1-rmse:0.139367\tvalidation_0-rmspe:0.137429\tvalidation_1-rmspe:0.119417\n",
      "[257]\tvalidation_0-rmse:0.117487\tvalidation_1-rmse:0.139364\tvalidation_0-rmspe:0.137391\tvalidation_1-rmspe:0.119421\n",
      "[258]\tvalidation_0-rmse:0.117471\tvalidation_1-rmse:0.139351\tvalidation_0-rmspe:0.137375\tvalidation_1-rmspe:0.119404\n",
      "[259]\tvalidation_0-rmse:0.117448\tvalidation_1-rmse:0.139352\tvalidation_0-rmspe:0.137378\tvalidation_1-rmspe:0.119393\n",
      "[260]\tvalidation_0-rmse:0.11743\tvalidation_1-rmse:0.139335\tvalidation_0-rmspe:0.137366\tvalidation_1-rmspe:0.119375\n",
      "[261]\tvalidation_0-rmse:0.117415\tvalidation_1-rmse:0.139327\tvalidation_0-rmspe:0.137361\tvalidation_1-rmspe:0.119367\n",
      "[262]\tvalidation_0-rmse:0.117317\tvalidation_1-rmse:0.139309\tvalidation_0-rmspe:0.137288\tvalidation_1-rmspe:0.119332\n",
      "[263]\tvalidation_0-rmse:0.117205\tvalidation_1-rmse:0.139317\tvalidation_0-rmspe:0.137243\tvalidation_1-rmspe:0.119333\n",
      "[264]\tvalidation_0-rmse:0.117165\tvalidation_1-rmse:0.139283\tvalidation_0-rmspe:0.137179\tvalidation_1-rmspe:0.119289\n",
      "[265]\tvalidation_0-rmse:0.11714\tvalidation_1-rmse:0.139272\tvalidation_0-rmspe:0.137147\tvalidation_1-rmspe:0.119284\n",
      "[266]\tvalidation_0-rmse:0.117055\tvalidation_1-rmse:0.139234\tvalidation_0-rmspe:0.137099\tvalidation_1-rmspe:0.119235\n",
      "[267]\tvalidation_0-rmse:0.116957\tvalidation_1-rmse:0.139207\tvalidation_0-rmspe:0.137061\tvalidation_1-rmspe:0.119221\n",
      "[268]\tvalidation_0-rmse:0.1169\tvalidation_1-rmse:0.139176\tvalidation_0-rmspe:0.137024\tvalidation_1-rmspe:0.119177\n",
      "[269]\tvalidation_0-rmse:0.116849\tvalidation_1-rmse:0.139136\tvalidation_0-rmspe:0.136994\tvalidation_1-rmspe:0.119117\n",
      "[270]\tvalidation_0-rmse:0.116722\tvalidation_1-rmse:0.139172\tvalidation_0-rmspe:0.136985\tvalidation_1-rmspe:0.11914\n",
      "[271]\tvalidation_0-rmse:0.116711\tvalidation_1-rmse:0.13917\tvalidation_0-rmspe:0.136955\tvalidation_1-rmspe:0.119124\n",
      "[272]\tvalidation_0-rmse:0.116684\tvalidation_1-rmse:0.139156\tvalidation_0-rmspe:0.13361\tvalidation_1-rmspe:0.119117\n",
      "[273]\tvalidation_0-rmse:0.116682\tvalidation_1-rmse:0.139153\tvalidation_0-rmspe:0.133609\tvalidation_1-rmspe:0.119113\n",
      "[274]\tvalidation_0-rmse:0.116646\tvalidation_1-rmse:0.139128\tvalidation_0-rmspe:0.133575\tvalidation_1-rmspe:0.119071\n",
      "[275]\tvalidation_0-rmse:0.116528\tvalidation_1-rmse:0.139102\tvalidation_0-rmspe:0.133546\tvalidation_1-rmspe:0.119042\n",
      "[276]\tvalidation_0-rmse:0.116444\tvalidation_1-rmse:0.139056\tvalidation_0-rmspe:0.133407\tvalidation_1-rmspe:0.118996\n",
      "[277]\tvalidation_0-rmse:0.116281\tvalidation_1-rmse:0.138933\tvalidation_0-rmspe:0.133227\tvalidation_1-rmspe:0.118855\n",
      "[278]\tvalidation_0-rmse:0.11621\tvalidation_1-rmse:0.138898\tvalidation_0-rmspe:0.133182\tvalidation_1-rmspe:0.118803\n",
      "[279]\tvalidation_0-rmse:0.116197\tvalidation_1-rmse:0.138894\tvalidation_0-rmspe:0.13316\tvalidation_1-rmspe:0.118803\n",
      "[280]\tvalidation_0-rmse:0.116169\tvalidation_1-rmse:0.138866\tvalidation_0-rmspe:0.133134\tvalidation_1-rmspe:0.118764\n",
      "[281]\tvalidation_0-rmse:0.116113\tvalidation_1-rmse:0.138834\tvalidation_0-rmspe:0.133101\tvalidation_1-rmspe:0.118723\n",
      "[282]\tvalidation_0-rmse:0.116071\tvalidation_1-rmse:0.138803\tvalidation_0-rmspe:0.133062\tvalidation_1-rmspe:0.11868\n",
      "[283]\tvalidation_0-rmse:0.116022\tvalidation_1-rmse:0.138788\tvalidation_0-rmspe:0.132981\tvalidation_1-rmspe:0.11866\n",
      "[284]\tvalidation_0-rmse:0.115976\tvalidation_1-rmse:0.138784\tvalidation_0-rmspe:0.13297\tvalidation_1-rmspe:0.118658\n",
      "[285]\tvalidation_0-rmse:0.115965\tvalidation_1-rmse:0.138781\tvalidation_0-rmspe:0.132966\tvalidation_1-rmspe:0.118652\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[286]\tvalidation_0-rmse:0.11593\tvalidation_1-rmse:0.138753\tvalidation_0-rmspe:0.132913\tvalidation_1-rmspe:0.118614\n",
      "[287]\tvalidation_0-rmse:0.115914\tvalidation_1-rmse:0.138744\tvalidation_0-rmspe:0.132912\tvalidation_1-rmspe:0.118602\n",
      "[288]\tvalidation_0-rmse:0.115868\tvalidation_1-rmse:0.13871\tvalidation_0-rmspe:0.132866\tvalidation_1-rmspe:0.118583\n",
      "[289]\tvalidation_0-rmse:0.11582\tvalidation_1-rmse:0.138665\tvalidation_0-rmspe:0.132821\tvalidation_1-rmspe:0.11851\n",
      "[290]\tvalidation_0-rmse:0.115755\tvalidation_1-rmse:0.138641\tvalidation_0-rmspe:0.13278\tvalidation_1-rmspe:0.118484\n",
      "[291]\tvalidation_0-rmse:0.115731\tvalidation_1-rmse:0.13862\tvalidation_0-rmspe:0.13276\tvalidation_1-rmspe:0.118455\n",
      "[292]\tvalidation_0-rmse:0.115706\tvalidation_1-rmse:0.138622\tvalidation_0-rmspe:0.132746\tvalidation_1-rmspe:0.118456\n",
      "[293]\tvalidation_0-rmse:0.115641\tvalidation_1-rmse:0.138578\tvalidation_0-rmspe:0.132703\tvalidation_1-rmspe:0.118401\n",
      "[294]\tvalidation_0-rmse:0.11552\tvalidation_1-rmse:0.138487\tvalidation_0-rmspe:0.132583\tvalidation_1-rmspe:0.118283\n",
      "[295]\tvalidation_0-rmse:0.115483\tvalidation_1-rmse:0.138474\tvalidation_0-rmspe:0.132562\tvalidation_1-rmspe:0.118269\n",
      "[296]\tvalidation_0-rmse:0.115451\tvalidation_1-rmse:0.13849\tvalidation_0-rmspe:0.13195\tvalidation_1-rmspe:0.11828\n",
      "[297]\tvalidation_0-rmse:0.115392\tvalidation_1-rmse:0.138454\tvalidation_0-rmspe:0.131909\tvalidation_1-rmspe:0.118226\n",
      "[298]\tvalidation_0-rmse:0.11539\tvalidation_1-rmse:0.138453\tvalidation_0-rmspe:0.131905\tvalidation_1-rmspe:0.118225\n",
      "[299]\tvalidation_0-rmse:0.115368\tvalidation_1-rmse:0.138436\tvalidation_0-rmspe:0.131869\tvalidation_1-rmspe:0.118196\n",
      "[300]\tvalidation_0-rmse:0.115348\tvalidation_1-rmse:0.138425\tvalidation_0-rmspe:0.131852\tvalidation_1-rmspe:0.118176\n",
      "[301]\tvalidation_0-rmse:0.115159\tvalidation_1-rmse:0.138402\tvalidation_0-rmspe:0.131808\tvalidation_1-rmspe:0.118147\n",
      "[302]\tvalidation_0-rmse:0.115082\tvalidation_1-rmse:0.138397\tvalidation_0-rmspe:0.131764\tvalidation_1-rmspe:0.118141\n",
      "[303]\tvalidation_0-rmse:0.115031\tvalidation_1-rmse:0.13838\tvalidation_0-rmspe:0.131744\tvalidation_1-rmspe:0.118116\n",
      "[304]\tvalidation_0-rmse:0.115031\tvalidation_1-rmse:0.13838\tvalidation_0-rmspe:0.131744\tvalidation_1-rmspe:0.118116\n",
      "[305]\tvalidation_0-rmse:0.115023\tvalidation_1-rmse:0.13838\tvalidation_0-rmspe:0.131738\tvalidation_1-rmspe:0.118113\n",
      "[306]\tvalidation_0-rmse:0.114973\tvalidation_1-rmse:0.138372\tvalidation_0-rmspe:0.131689\tvalidation_1-rmspe:0.118077\n",
      "[307]\tvalidation_0-rmse:0.114964\tvalidation_1-rmse:0.138366\tvalidation_0-rmspe:0.131673\tvalidation_1-rmspe:0.118066\n",
      "[308]\tvalidation_0-rmse:0.114928\tvalidation_1-rmse:0.138345\tvalidation_0-rmspe:0.13164\tvalidation_1-rmspe:0.118036\n",
      "[309]\tvalidation_0-rmse:0.114917\tvalidation_1-rmse:0.138335\tvalidation_0-rmspe:0.131629\tvalidation_1-rmspe:0.118021\n",
      "[310]\tvalidation_0-rmse:0.114903\tvalidation_1-rmse:0.138374\tvalidation_0-rmspe:0.13162\tvalidation_1-rmspe:0.118025\n",
      "[311]\tvalidation_0-rmse:0.114898\tvalidation_1-rmse:0.138386\tvalidation_0-rmspe:0.131602\tvalidation_1-rmspe:0.118026\n",
      "[312]\tvalidation_0-rmse:0.114891\tvalidation_1-rmse:0.138382\tvalidation_0-rmspe:0.131597\tvalidation_1-rmspe:0.118022\n",
      "[313]\tvalidation_0-rmse:0.114839\tvalidation_1-rmse:0.138417\tvalidation_0-rmspe:0.131574\tvalidation_1-rmspe:0.118021\n",
      "[314]\tvalidation_0-rmse:0.114779\tvalidation_1-rmse:0.138407\tvalidation_0-rmspe:0.131557\tvalidation_1-rmspe:0.11802\n",
      "[315]\tvalidation_0-rmse:0.114749\tvalidation_1-rmse:0.138393\tvalidation_0-rmspe:0.131529\tvalidation_1-rmspe:0.118009\n",
      "[316]\tvalidation_0-rmse:0.11469\tvalidation_1-rmse:0.138384\tvalidation_0-rmspe:0.131522\tvalidation_1-rmspe:0.117999\n",
      "[317]\tvalidation_0-rmse:0.114659\tvalidation_1-rmse:0.138365\tvalidation_0-rmspe:0.1315\tvalidation_1-rmspe:0.117974\n",
      "[318]\tvalidation_0-rmse:0.114596\tvalidation_1-rmse:0.138307\tvalidation_0-rmspe:0.131564\tvalidation_1-rmspe:0.11789\n",
      "[319]\tvalidation_0-rmse:0.114528\tvalidation_1-rmse:0.138264\tvalidation_0-rmspe:0.131487\tvalidation_1-rmspe:0.117845\n",
      "[320]\tvalidation_0-rmse:0.11451\tvalidation_1-rmse:0.13827\tvalidation_0-rmspe:0.130939\tvalidation_1-rmspe:0.117839\n",
      "[321]\tvalidation_0-rmse:0.114447\tvalidation_1-rmse:0.138263\tvalidation_0-rmspe:0.130821\tvalidation_1-rmspe:0.11776\n",
      "[322]\tvalidation_0-rmse:0.114364\tvalidation_1-rmse:0.138193\tvalidation_0-rmspe:0.130749\tvalidation_1-rmspe:0.117679\n",
      "[323]\tvalidation_0-rmse:0.114328\tvalidation_1-rmse:0.138161\tvalidation_0-rmspe:0.130725\tvalidation_1-rmspe:0.11764\n",
      "[324]\tvalidation_0-rmse:0.114321\tvalidation_1-rmse:0.138161\tvalidation_0-rmspe:0.130727\tvalidation_1-rmspe:0.117644\n",
      "[325]\tvalidation_0-rmse:0.114286\tvalidation_1-rmse:0.138162\tvalidation_0-rmspe:0.130714\tvalidation_1-rmspe:0.117645\n",
      "[326]\tvalidation_0-rmse:0.114242\tvalidation_1-rmse:0.138142\tvalidation_0-rmspe:0.130552\tvalidation_1-rmspe:0.117569\n",
      "[327]\tvalidation_0-rmse:0.114217\tvalidation_1-rmse:0.138131\tvalidation_0-rmspe:0.130535\tvalidation_1-rmspe:0.11756\n",
      "[328]\tvalidation_0-rmse:0.114193\tvalidation_1-rmse:0.138115\tvalidation_0-rmspe:0.130525\tvalidation_1-rmspe:0.117533\n",
      "[329]\tvalidation_0-rmse:0.114175\tvalidation_1-rmse:0.138108\tvalidation_0-rmspe:0.130506\tvalidation_1-rmspe:0.117522\n",
      "[330]\tvalidation_0-rmse:0.114124\tvalidation_1-rmse:0.138095\tvalidation_0-rmspe:0.130477\tvalidation_1-rmspe:0.117507\n",
      "[331]\tvalidation_0-rmse:0.114115\tvalidation_1-rmse:0.138091\tvalidation_0-rmspe:0.130469\tvalidation_1-rmspe:0.117498\n",
      "[332]\tvalidation_0-rmse:0.114058\tvalidation_1-rmse:0.138077\tvalidation_0-rmspe:0.130431\tvalidation_1-rmspe:0.117486\n",
      "[333]\tvalidation_0-rmse:0.11398\tvalidation_1-rmse:0.138\tvalidation_0-rmspe:0.130355\tvalidation_1-rmspe:0.11738\n",
      "[334]\tvalidation_0-rmse:0.113969\tvalidation_1-rmse:0.137979\tvalidation_0-rmspe:0.130342\tvalidation_1-rmspe:0.117336\n",
      "[335]\tvalidation_0-rmse:0.113887\tvalidation_1-rmse:0.13798\tvalidation_0-rmspe:0.130317\tvalidation_1-rmspe:0.117345\n",
      "[336]\tvalidation_0-rmse:0.113875\tvalidation_1-rmse:0.137974\tvalidation_0-rmspe:0.130304\tvalidation_1-rmspe:0.117336\n",
      "[337]\tvalidation_0-rmse:0.113851\tvalidation_1-rmse:0.137956\tvalidation_0-rmspe:0.130275\tvalidation_1-rmspe:0.117308\n",
      "[338]\tvalidation_0-rmse:0.113834\tvalidation_1-rmse:0.137947\tvalidation_0-rmspe:0.130267\tvalidation_1-rmspe:0.117302\n",
      "[339]\tvalidation_0-rmse:0.113828\tvalidation_1-rmse:0.137938\tvalidation_0-rmspe:0.130264\tvalidation_1-rmspe:0.117305\n",
      "[340]\tvalidation_0-rmse:0.113815\tvalidation_1-rmse:0.137937\tvalidation_0-rmspe:0.130248\tvalidation_1-rmspe:0.117304\n",
      "[341]\tvalidation_0-rmse:0.113767\tvalidation_1-rmse:0.137923\tvalidation_0-rmspe:0.13019\tvalidation_1-rmspe:0.11728\n",
      "[342]\tvalidation_0-rmse:0.113722\tvalidation_1-rmse:0.137898\tvalidation_0-rmspe:0.130127\tvalidation_1-rmspe:0.117231\n",
      "[343]\tvalidation_0-rmse:0.113714\tvalidation_1-rmse:0.137894\tvalidation_0-rmspe:0.130117\tvalidation_1-rmspe:0.117226\n",
      "[344]\tvalidation_0-rmse:0.113669\tvalidation_1-rmse:0.137883\tvalidation_0-rmspe:0.130024\tvalidation_1-rmspe:0.11722\n",
      "[345]\tvalidation_0-rmse:0.11363\tvalidation_1-rmse:0.13788\tvalidation_0-rmspe:0.130008\tvalidation_1-rmspe:0.117219\n",
      "[346]\tvalidation_0-rmse:0.113609\tvalidation_1-rmse:0.137868\tvalidation_0-rmspe:0.129991\tvalidation_1-rmspe:0.117196\n",
      "[347]\tvalidation_0-rmse:0.113601\tvalidation_1-rmse:0.137861\tvalidation_0-rmspe:0.129985\tvalidation_1-rmspe:0.117195\n",
      "[348]\tvalidation_0-rmse:0.113567\tvalidation_1-rmse:0.137912\tvalidation_0-rmspe:0.129969\tvalidation_1-rmspe:0.11722\n",
      "[349]\tvalidation_0-rmse:0.113545\tvalidation_1-rmse:0.137908\tvalidation_0-rmspe:0.12987\tvalidation_1-rmspe:0.117216\n",
      "[350]\tvalidation_0-rmse:0.113535\tvalidation_1-rmse:0.137911\tvalidation_0-rmspe:0.129848\tvalidation_1-rmspe:0.117221\n",
      "[351]\tvalidation_0-rmse:0.113506\tvalidation_1-rmse:0.137898\tvalidation_0-rmspe:0.129832\tvalidation_1-rmspe:0.117203\n",
      "[352]\tvalidation_0-rmse:0.113498\tvalidation_1-rmse:0.13789\tvalidation_0-rmspe:0.129813\tvalidation_1-rmspe:0.117192\n",
      "[353]\tvalidation_0-rmse:0.113467\tvalidation_1-rmse:0.137869\tvalidation_0-rmspe:0.128953\tvalidation_1-rmspe:0.117162\n",
      "[354]\tvalidation_0-rmse:0.113448\tvalidation_1-rmse:0.137848\tvalidation_0-rmspe:0.128492\tvalidation_1-rmspe:0.117139\n",
      "[355]\tvalidation_0-rmse:0.113408\tvalidation_1-rmse:0.137838\tvalidation_0-rmspe:0.128491\tvalidation_1-rmspe:0.117122\n",
      "[356]\tvalidation_0-rmse:0.113402\tvalidation_1-rmse:0.137833\tvalidation_0-rmspe:0.12848\tvalidation_1-rmspe:0.117117\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[357]\tvalidation_0-rmse:0.113368\tvalidation_1-rmse:0.137859\tvalidation_0-rmspe:0.12847\tvalidation_1-rmspe:0.117132\n",
      "[358]\tvalidation_0-rmse:0.113351\tvalidation_1-rmse:0.13785\tvalidation_0-rmspe:0.128442\tvalidation_1-rmspe:0.117127\n",
      "[359]\tvalidation_0-rmse:0.113319\tvalidation_1-rmse:0.137822\tvalidation_0-rmspe:0.128411\tvalidation_1-rmspe:0.117094\n",
      "[360]\tvalidation_0-rmse:0.113292\tvalidation_1-rmse:0.137812\tvalidation_0-rmspe:0.128387\tvalidation_1-rmspe:0.117097\n",
      "[361]\tvalidation_0-rmse:0.113245\tvalidation_1-rmse:0.137787\tvalidation_0-rmspe:0.128358\tvalidation_1-rmspe:0.117068\n",
      "[362]\tvalidation_0-rmse:0.113227\tvalidation_1-rmse:0.137787\tvalidation_0-rmspe:0.128319\tvalidation_1-rmspe:0.117071\n",
      "[363]\tvalidation_0-rmse:0.113183\tvalidation_1-rmse:0.137782\tvalidation_0-rmspe:0.128287\tvalidation_1-rmspe:0.117075\n",
      "[364]\tvalidation_0-rmse:0.11316\tvalidation_1-rmse:0.13778\tvalidation_0-rmspe:0.128275\tvalidation_1-rmspe:0.117073\n",
      "[365]\tvalidation_0-rmse:0.113116\tvalidation_1-rmse:0.137754\tvalidation_0-rmspe:0.128251\tvalidation_1-rmspe:0.117046\n",
      "[366]\tvalidation_0-rmse:0.113106\tvalidation_1-rmse:0.137711\tvalidation_0-rmspe:0.128248\tvalidation_1-rmspe:0.11704\n",
      "[367]\tvalidation_0-rmse:0.113068\tvalidation_1-rmse:0.137666\tvalidation_0-rmspe:0.128206\tvalidation_1-rmspe:0.116981\n",
      "[368]\tvalidation_0-rmse:0.113011\tvalidation_1-rmse:0.137639\tvalidation_0-rmspe:0.128149\tvalidation_1-rmspe:0.11696\n",
      "[369]\tvalidation_0-rmse:0.112961\tvalidation_1-rmse:0.137615\tvalidation_0-rmspe:0.128108\tvalidation_1-rmspe:0.116935\n",
      "[370]\tvalidation_0-rmse:0.112891\tvalidation_1-rmse:0.137612\tvalidation_0-rmspe:0.128111\tvalidation_1-rmspe:0.116936\n",
      "[371]\tvalidation_0-rmse:0.112852\tvalidation_1-rmse:0.137601\tvalidation_0-rmspe:0.128097\tvalidation_1-rmspe:0.11692\n",
      "[372]\tvalidation_0-rmse:0.112803\tvalidation_1-rmse:0.137564\tvalidation_0-rmspe:0.128053\tvalidation_1-rmspe:0.116854\n",
      "[373]\tvalidation_0-rmse:0.112797\tvalidation_1-rmse:0.137558\tvalidation_0-rmspe:0.12805\tvalidation_1-rmspe:0.116849\n",
      "[374]\tvalidation_0-rmse:0.112762\tvalidation_1-rmse:0.137551\tvalidation_0-rmspe:0.128026\tvalidation_1-rmspe:0.116839\n",
      "[375]\tvalidation_0-rmse:0.112719\tvalidation_1-rmse:0.137542\tvalidation_0-rmspe:0.127987\tvalidation_1-rmspe:0.116846\n",
      "[376]\tvalidation_0-rmse:0.112676\tvalidation_1-rmse:0.13752\tvalidation_0-rmspe:0.127929\tvalidation_1-rmspe:0.116825\n",
      "[377]\tvalidation_0-rmse:0.112593\tvalidation_1-rmse:0.137508\tvalidation_0-rmspe:0.127861\tvalidation_1-rmspe:0.116813\n",
      "[378]\tvalidation_0-rmse:0.112592\tvalidation_1-rmse:0.137508\tvalidation_0-rmspe:0.127858\tvalidation_1-rmspe:0.116815\n",
      "[379]\tvalidation_0-rmse:0.112557\tvalidation_1-rmse:0.137486\tvalidation_0-rmspe:0.127826\tvalidation_1-rmspe:0.116801\n",
      "[380]\tvalidation_0-rmse:0.112541\tvalidation_1-rmse:0.137483\tvalidation_0-rmspe:0.127819\tvalidation_1-rmspe:0.116798\n",
      "[381]\tvalidation_0-rmse:0.112528\tvalidation_1-rmse:0.137455\tvalidation_0-rmspe:0.1274\tvalidation_1-rmspe:0.116753\n",
      "[382]\tvalidation_0-rmse:0.11244\tvalidation_1-rmse:0.137434\tvalidation_0-rmspe:0.127346\tvalidation_1-rmspe:0.11672\n",
      "[383]\tvalidation_0-rmse:0.112411\tvalidation_1-rmse:0.137421\tvalidation_0-rmspe:0.127324\tvalidation_1-rmspe:0.116695\n",
      "[384]\tvalidation_0-rmse:0.112391\tvalidation_1-rmse:0.137417\tvalidation_0-rmspe:0.127295\tvalidation_1-rmspe:0.116692\n",
      "[385]\tvalidation_0-rmse:0.112356\tvalidation_1-rmse:0.137398\tvalidation_0-rmspe:0.127279\tvalidation_1-rmspe:0.116675\n",
      "[386]\tvalidation_0-rmse:0.112321\tvalidation_1-rmse:0.137383\tvalidation_0-rmspe:0.126936\tvalidation_1-rmspe:0.116657\n",
      "[387]\tvalidation_0-rmse:0.1123\tvalidation_1-rmse:0.137379\tvalidation_0-rmspe:0.126891\tvalidation_1-rmspe:0.11665\n",
      "[388]\tvalidation_0-rmse:0.112287\tvalidation_1-rmse:0.137381\tvalidation_0-rmspe:0.126888\tvalidation_1-rmspe:0.116664\n",
      "[389]\tvalidation_0-rmse:0.112278\tvalidation_1-rmse:0.137378\tvalidation_0-rmspe:0.126888\tvalidation_1-rmspe:0.116657\n",
      "[390]\tvalidation_0-rmse:0.112204\tvalidation_1-rmse:0.137317\tvalidation_0-rmspe:0.126815\tvalidation_1-rmspe:0.116584\n",
      "[391]\tvalidation_0-rmse:0.112132\tvalidation_1-rmse:0.13731\tvalidation_0-rmspe:0.12677\tvalidation_1-rmspe:0.116554\n",
      "[392]\tvalidation_0-rmse:0.112094\tvalidation_1-rmse:0.137303\tvalidation_0-rmspe:0.126749\tvalidation_1-rmspe:0.116548\n",
      "[393]\tvalidation_0-rmse:0.112061\tvalidation_1-rmse:0.137304\tvalidation_0-rmspe:0.12674\tvalidation_1-rmspe:0.116552\n",
      "[394]\tvalidation_0-rmse:0.112007\tvalidation_1-rmse:0.137268\tvalidation_0-rmspe:0.126702\tvalidation_1-rmspe:0.116494\n",
      "[395]\tvalidation_0-rmse:0.111999\tvalidation_1-rmse:0.137266\tvalidation_0-rmspe:0.126693\tvalidation_1-rmspe:0.116491\n",
      "[396]\tvalidation_0-rmse:0.111992\tvalidation_1-rmse:0.137257\tvalidation_0-rmspe:0.126688\tvalidation_1-rmspe:0.116484\n",
      "[397]\tvalidation_0-rmse:0.111958\tvalidation_1-rmse:0.13723\tvalidation_0-rmspe:0.126656\tvalidation_1-rmspe:0.116451\n",
      "[398]\tvalidation_0-rmse:0.11192\tvalidation_1-rmse:0.137211\tvalidation_0-rmspe:0.126594\tvalidation_1-rmspe:0.116434\n",
      "[399]\tvalidation_0-rmse:0.11191\tvalidation_1-rmse:0.137212\tvalidation_0-rmspe:0.12659\tvalidation_1-rmspe:0.116433\n",
      "[400]\tvalidation_0-rmse:0.111884\tvalidation_1-rmse:0.137213\tvalidation_0-rmspe:0.126565\tvalidation_1-rmspe:0.116432\n",
      "[401]\tvalidation_0-rmse:0.111824\tvalidation_1-rmse:0.137177\tvalidation_0-rmspe:0.126511\tvalidation_1-rmspe:0.116375\n",
      "[402]\tvalidation_0-rmse:0.111797\tvalidation_1-rmse:0.137175\tvalidation_0-rmspe:0.12651\tvalidation_1-rmspe:0.116376\n",
      "[403]\tvalidation_0-rmse:0.111792\tvalidation_1-rmse:0.137173\tvalidation_0-rmspe:0.126507\tvalidation_1-rmspe:0.116376\n",
      "[404]\tvalidation_0-rmse:0.11176\tvalidation_1-rmse:0.137149\tvalidation_0-rmspe:0.126461\tvalidation_1-rmspe:0.116343\n",
      "[405]\tvalidation_0-rmse:0.111753\tvalidation_1-rmse:0.137142\tvalidation_0-rmspe:0.126456\tvalidation_1-rmspe:0.116336\n",
      "[406]\tvalidation_0-rmse:0.11174\tvalidation_1-rmse:0.137141\tvalidation_0-rmspe:0.126452\tvalidation_1-rmspe:0.116336\n",
      "[407]\tvalidation_0-rmse:0.111719\tvalidation_1-rmse:0.13713\tvalidation_0-rmspe:0.126462\tvalidation_1-rmspe:0.116331\n",
      "[408]\tvalidation_0-rmse:0.111706\tvalidation_1-rmse:0.137147\tvalidation_0-rmspe:0.12646\tvalidation_1-rmspe:0.116343\n",
      "[409]\tvalidation_0-rmse:0.111683\tvalidation_1-rmse:0.137132\tvalidation_0-rmspe:0.126446\tvalidation_1-rmspe:0.116323\n",
      "[410]\tvalidation_0-rmse:0.111677\tvalidation_1-rmse:0.137131\tvalidation_0-rmspe:0.12644\tvalidation_1-rmspe:0.116321\n",
      "[411]\tvalidation_0-rmse:0.111666\tvalidation_1-rmse:0.137124\tvalidation_0-rmspe:0.126267\tvalidation_1-rmspe:0.116316\n",
      "[412]\tvalidation_0-rmse:0.111629\tvalidation_1-rmse:0.137114\tvalidation_0-rmspe:0.126236\tvalidation_1-rmspe:0.116298\n",
      "[413]\tvalidation_0-rmse:0.111625\tvalidation_1-rmse:0.137112\tvalidation_0-rmspe:0.12633\tvalidation_1-rmspe:0.116298\n",
      "[414]\tvalidation_0-rmse:0.111607\tvalidation_1-rmse:0.137108\tvalidation_0-rmspe:0.126246\tvalidation_1-rmspe:0.1163\n",
      "[415]\tvalidation_0-rmse:0.111557\tvalidation_1-rmse:0.137135\tvalidation_0-rmspe:0.126251\tvalidation_1-rmspe:0.11649\n",
      "[416]\tvalidation_0-rmse:0.111546\tvalidation_1-rmse:0.137134\tvalidation_0-rmspe:0.126245\tvalidation_1-rmspe:0.116487\n",
      "[417]\tvalidation_0-rmse:0.111535\tvalidation_1-rmse:0.137133\tvalidation_0-rmspe:0.126223\tvalidation_1-rmspe:0.116483\n",
      "[418]\tvalidation_0-rmse:0.111532\tvalidation_1-rmse:0.137135\tvalidation_0-rmspe:0.12622\tvalidation_1-rmspe:0.116482\n",
      "[419]\tvalidation_0-rmse:0.111509\tvalidation_1-rmse:0.137117\tvalidation_0-rmspe:0.126189\tvalidation_1-rmspe:0.116451\n",
      "[420]\tvalidation_0-rmse:0.111448\tvalidation_1-rmse:0.137108\tvalidation_0-rmspe:0.126159\tvalidation_1-rmspe:0.11644\n",
      "[421]\tvalidation_0-rmse:0.111415\tvalidation_1-rmse:0.137097\tvalidation_0-rmspe:0.126132\tvalidation_1-rmspe:0.116426\n",
      "[422]\tvalidation_0-rmse:0.11139\tvalidation_1-rmse:0.137084\tvalidation_0-rmspe:0.126113\tvalidation_1-rmspe:0.116407\n",
      "[423]\tvalidation_0-rmse:0.111378\tvalidation_1-rmse:0.137082\tvalidation_0-rmspe:0.126092\tvalidation_1-rmspe:0.116404\n",
      "[424]\tvalidation_0-rmse:0.111362\tvalidation_1-rmse:0.137065\tvalidation_0-rmspe:0.126078\tvalidation_1-rmspe:0.116394\n",
      "[425]\tvalidation_0-rmse:0.111342\tvalidation_1-rmse:0.137051\tvalidation_0-rmspe:0.12606\tvalidation_1-rmspe:0.116375\n",
      "[426]\tvalidation_0-rmse:0.111336\tvalidation_1-rmse:0.137047\tvalidation_0-rmspe:0.126055\tvalidation_1-rmspe:0.116376\n",
      "[427]\tvalidation_0-rmse:0.111298\tvalidation_1-rmse:0.137032\tvalidation_0-rmspe:0.12602\tvalidation_1-rmspe:0.116359\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[428]\tvalidation_0-rmse:0.111273\tvalidation_1-rmse:0.137027\tvalidation_0-rmspe:0.125795\tvalidation_1-rmspe:0.116323\n",
      "[429]\tvalidation_0-rmse:0.111258\tvalidation_1-rmse:0.137024\tvalidation_0-rmspe:0.125791\tvalidation_1-rmspe:0.11632\n",
      "[430]\tvalidation_0-rmse:0.111161\tvalidation_1-rmse:0.137012\tvalidation_0-rmspe:0.125724\tvalidation_1-rmspe:0.116346\n",
      "[431]\tvalidation_0-rmse:0.111138\tvalidation_1-rmse:0.137001\tvalidation_0-rmspe:0.123211\tvalidation_1-rmspe:0.116336\n",
      "[432]\tvalidation_0-rmse:0.111133\tvalidation_1-rmse:0.136996\tvalidation_0-rmspe:0.123206\tvalidation_1-rmspe:0.116332\n",
      "[433]\tvalidation_0-rmse:0.111126\tvalidation_1-rmse:0.136982\tvalidation_0-rmspe:0.123203\tvalidation_1-rmspe:0.116322\n",
      "[434]\tvalidation_0-rmse:0.111105\tvalidation_1-rmse:0.136972\tvalidation_0-rmspe:0.123186\tvalidation_1-rmspe:0.116315\n",
      "[435]\tvalidation_0-rmse:0.111092\tvalidation_1-rmse:0.136968\tvalidation_0-rmspe:0.12317\tvalidation_1-rmspe:0.116309\n",
      "[436]\tvalidation_0-rmse:0.111075\tvalidation_1-rmse:0.136952\tvalidation_0-rmspe:0.123151\tvalidation_1-rmspe:0.116289\n",
      "[437]\tvalidation_0-rmse:0.11103\tvalidation_1-rmse:0.136959\tvalidation_0-rmspe:0.123123\tvalidation_1-rmspe:0.116286\n",
      "[438]\tvalidation_0-rmse:0.111\tvalidation_1-rmse:0.136949\tvalidation_0-rmspe:0.123102\tvalidation_1-rmspe:0.11627\n",
      "[439]\tvalidation_0-rmse:0.110951\tvalidation_1-rmse:0.136924\tvalidation_0-rmspe:0.123093\tvalidation_1-rmspe:0.116238\n",
      "[440]\tvalidation_0-rmse:0.110923\tvalidation_1-rmse:0.136906\tvalidation_0-rmspe:0.12306\tvalidation_1-rmspe:0.1162\n",
      "[441]\tvalidation_0-rmse:0.110908\tvalidation_1-rmse:0.136904\tvalidation_0-rmspe:0.122973\tvalidation_1-rmspe:0.116197\n",
      "[442]\tvalidation_0-rmse:0.110903\tvalidation_1-rmse:0.136901\tvalidation_0-rmspe:0.122975\tvalidation_1-rmspe:0.116198\n",
      "[443]\tvalidation_0-rmse:0.110891\tvalidation_1-rmse:0.136892\tvalidation_0-rmspe:0.122964\tvalidation_1-rmspe:0.116191\n",
      "[444]\tvalidation_0-rmse:0.110884\tvalidation_1-rmse:0.136891\tvalidation_0-rmspe:0.122956\tvalidation_1-rmspe:0.116194\n",
      "[445]\tvalidation_0-rmse:0.110876\tvalidation_1-rmse:0.136886\tvalidation_0-rmspe:0.122948\tvalidation_1-rmspe:0.116186\n",
      "[446]\tvalidation_0-rmse:0.110854\tvalidation_1-rmse:0.13687\tvalidation_0-rmspe:0.122927\tvalidation_1-rmspe:0.116169\n",
      "[447]\tvalidation_0-rmse:0.110846\tvalidation_1-rmse:0.136868\tvalidation_0-rmspe:0.122912\tvalidation_1-rmspe:0.116162\n",
      "[448]\tvalidation_0-rmse:0.110844\tvalidation_1-rmse:0.136865\tvalidation_0-rmspe:0.12291\tvalidation_1-rmspe:0.116159\n",
      "[449]\tvalidation_0-rmse:0.110827\tvalidation_1-rmse:0.136861\tvalidation_0-rmspe:0.122903\tvalidation_1-rmspe:0.116155\n",
      "[450]\tvalidation_0-rmse:0.11081\tvalidation_1-rmse:0.136859\tvalidation_0-rmspe:0.12289\tvalidation_1-rmspe:0.116155\n",
      "[451]\tvalidation_0-rmse:0.110745\tvalidation_1-rmse:0.136856\tvalidation_0-rmspe:0.12288\tvalidation_1-rmspe:0.11615\n",
      "[452]\tvalidation_0-rmse:0.110733\tvalidation_1-rmse:0.136852\tvalidation_0-rmspe:0.122867\tvalidation_1-rmspe:0.116147\n",
      "[453]\tvalidation_0-rmse:0.110718\tvalidation_1-rmse:0.136828\tvalidation_0-rmspe:0.122851\tvalidation_1-rmspe:0.116128\n",
      "[454]\tvalidation_0-rmse:0.110681\tvalidation_1-rmse:0.13686\tvalidation_0-rmspe:0.122816\tvalidation_1-rmspe:0.116154\n",
      "[455]\tvalidation_0-rmse:0.110672\tvalidation_1-rmse:0.136859\tvalidation_0-rmspe:0.122783\tvalidation_1-rmspe:0.116148\n",
      "[456]\tvalidation_0-rmse:0.110664\tvalidation_1-rmse:0.136857\tvalidation_0-rmspe:0.122772\tvalidation_1-rmspe:0.11614\n",
      "[457]\tvalidation_0-rmse:0.110661\tvalidation_1-rmse:0.136853\tvalidation_0-rmspe:0.122771\tvalidation_1-rmspe:0.116136\n",
      "[458]\tvalidation_0-rmse:0.110617\tvalidation_1-rmse:0.136844\tvalidation_0-rmspe:0.122762\tvalidation_1-rmspe:0.116126\n",
      "[459]\tvalidation_0-rmse:0.110615\tvalidation_1-rmse:0.136842\tvalidation_0-rmspe:0.122759\tvalidation_1-rmspe:0.116123\n",
      "[460]\tvalidation_0-rmse:0.110604\tvalidation_1-rmse:0.136781\tvalidation_0-rmspe:0.122749\tvalidation_1-rmspe:0.116106\n",
      "[461]\tvalidation_0-rmse:0.1106\tvalidation_1-rmse:0.136778\tvalidation_0-rmspe:0.122746\tvalidation_1-rmspe:0.116103\n",
      "[462]\tvalidation_0-rmse:0.110599\tvalidation_1-rmse:0.136778\tvalidation_0-rmspe:0.122746\tvalidation_1-rmspe:0.116103\n",
      "[463]\tvalidation_0-rmse:0.11059\tvalidation_1-rmse:0.13678\tvalidation_0-rmspe:0.122741\tvalidation_1-rmspe:0.116107\n",
      "[464]\tvalidation_0-rmse:0.110554\tvalidation_1-rmse:0.13678\tvalidation_0-rmspe:0.122735\tvalidation_1-rmspe:0.116103\n",
      "[465]\tvalidation_0-rmse:0.110532\tvalidation_1-rmse:0.136764\tvalidation_0-rmspe:0.122724\tvalidation_1-rmspe:0.116093\n",
      "[466]\tvalidation_0-rmse:0.110493\tvalidation_1-rmse:0.13676\tvalidation_0-rmspe:0.122706\tvalidation_1-rmspe:0.116088\n",
      "[467]\tvalidation_0-rmse:0.11045\tvalidation_1-rmse:0.136727\tvalidation_0-rmspe:0.122671\tvalidation_1-rmspe:0.11604\n",
      "[468]\tvalidation_0-rmse:0.110442\tvalidation_1-rmse:0.136722\tvalidation_0-rmspe:0.12265\tvalidation_1-rmspe:0.116032\n",
      "[469]\tvalidation_0-rmse:0.110427\tvalidation_1-rmse:0.136719\tvalidation_0-rmspe:0.122644\tvalidation_1-rmspe:0.11603\n",
      "[470]\tvalidation_0-rmse:0.11041\tvalidation_1-rmse:0.136724\tvalidation_0-rmspe:0.1226\tvalidation_1-rmspe:0.116012\n",
      "[471]\tvalidation_0-rmse:0.110409\tvalidation_1-rmse:0.136723\tvalidation_0-rmspe:0.122598\tvalidation_1-rmspe:0.116011\n",
      "[472]\tvalidation_0-rmse:0.110376\tvalidation_1-rmse:0.136707\tvalidation_0-rmspe:0.122566\tvalidation_1-rmspe:0.115995\n",
      "[473]\tvalidation_0-rmse:0.110298\tvalidation_1-rmse:0.136698\tvalidation_0-rmspe:0.122482\tvalidation_1-rmspe:0.115985\n",
      "[474]\tvalidation_0-rmse:0.110282\tvalidation_1-rmse:0.136693\tvalidation_0-rmspe:0.122474\tvalidation_1-rmspe:0.115978\n",
      "[475]\tvalidation_0-rmse:0.110273\tvalidation_1-rmse:0.136687\tvalidation_0-rmspe:0.122463\tvalidation_1-rmspe:0.11597\n",
      "[476]\tvalidation_0-rmse:0.110251\tvalidation_1-rmse:0.136676\tvalidation_0-rmspe:0.122451\tvalidation_1-rmspe:0.115949\n",
      "[477]\tvalidation_0-rmse:0.110247\tvalidation_1-rmse:0.136673\tvalidation_0-rmspe:0.122452\tvalidation_1-rmspe:0.115946\n",
      "[478]\tvalidation_0-rmse:0.110247\tvalidation_1-rmse:0.136673\tvalidation_0-rmspe:0.122451\tvalidation_1-rmspe:0.115945\n",
      "[479]\tvalidation_0-rmse:0.11023\tvalidation_1-rmse:0.136665\tvalidation_0-rmspe:0.122445\tvalidation_1-rmspe:0.115936\n",
      "[480]\tvalidation_0-rmse:0.110217\tvalidation_1-rmse:0.136661\tvalidation_0-rmspe:0.122374\tvalidation_1-rmspe:0.115937\n",
      "[481]\tvalidation_0-rmse:0.11015\tvalidation_1-rmse:0.136655\tvalidation_0-rmspe:0.122363\tvalidation_1-rmspe:0.115926\n",
      "[482]\tvalidation_0-rmse:0.110145\tvalidation_1-rmse:0.136664\tvalidation_0-rmspe:0.122359\tvalidation_1-rmspe:0.115928\n",
      "[483]\tvalidation_0-rmse:0.110112\tvalidation_1-rmse:0.136639\tvalidation_0-rmspe:0.122333\tvalidation_1-rmspe:0.115896\n",
      "[484]\tvalidation_0-rmse:0.110108\tvalidation_1-rmse:0.136638\tvalidation_0-rmspe:0.122331\tvalidation_1-rmspe:0.115894\n",
      "[485]\tvalidation_0-rmse:0.11007\tvalidation_1-rmse:0.136638\tvalidation_0-rmspe:0.122318\tvalidation_1-rmspe:0.115888\n",
      "[486]\tvalidation_0-rmse:0.110067\tvalidation_1-rmse:0.136639\tvalidation_0-rmspe:0.122316\tvalidation_1-rmspe:0.115889\n",
      "[487]\tvalidation_0-rmse:0.110041\tvalidation_1-rmse:0.13662\tvalidation_0-rmspe:0.122299\tvalidation_1-rmspe:0.115864\n",
      "[488]\tvalidation_0-rmse:0.110023\tvalidation_1-rmse:0.136606\tvalidation_0-rmspe:0.122268\tvalidation_1-rmspe:0.115848\n",
      "[489]\tvalidation_0-rmse:0.110014\tvalidation_1-rmse:0.136606\tvalidation_0-rmspe:0.122262\tvalidation_1-rmspe:0.11585\n",
      "[490]\tvalidation_0-rmse:0.110008\tvalidation_1-rmse:0.136602\tvalidation_0-rmspe:0.122253\tvalidation_1-rmspe:0.115846\n",
      "[491]\tvalidation_0-rmse:0.109994\tvalidation_1-rmse:0.136597\tvalidation_0-rmspe:0.122233\tvalidation_1-rmspe:0.115843\n",
      "[492]\tvalidation_0-rmse:0.109979\tvalidation_1-rmse:0.136593\tvalidation_0-rmspe:0.122224\tvalidation_1-rmspe:0.115841\n",
      "[493]\tvalidation_0-rmse:0.109969\tvalidation_1-rmse:0.136589\tvalidation_0-rmspe:0.122214\tvalidation_1-rmspe:0.115833\n",
      "[494]\tvalidation_0-rmse:0.109968\tvalidation_1-rmse:0.136587\tvalidation_0-rmspe:0.122212\tvalidation_1-rmspe:0.115831\n",
      "[495]\tvalidation_0-rmse:0.109944\tvalidation_1-rmse:0.136579\tvalidation_0-rmspe:0.1222\tvalidation_1-rmspe:0.115825\n",
      "[496]\tvalidation_0-rmse:0.109926\tvalidation_1-rmse:0.136576\tvalidation_0-rmspe:0.121615\tvalidation_1-rmspe:0.115821\n",
      "[497]\tvalidation_0-rmse:0.109923\tvalidation_1-rmse:0.136576\tvalidation_0-rmspe:0.121607\tvalidation_1-rmspe:0.115818\n",
      "[498]\tvalidation_0-rmse:0.109884\tvalidation_1-rmse:0.136581\tvalidation_0-rmspe:0.121512\tvalidation_1-rmspe:0.115815\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[499]\tvalidation_0-rmse:0.109854\tvalidation_1-rmse:0.136572\tvalidation_0-rmspe:0.121493\tvalidation_1-rmspe:0.115805\n",
      "[500]\tvalidation_0-rmse:0.10982\tvalidation_1-rmse:0.136583\tvalidation_0-rmspe:0.121492\tvalidation_1-rmspe:0.115808\n",
      "[501]\tvalidation_0-rmse:0.109785\tvalidation_1-rmse:0.136566\tvalidation_0-rmspe:0.121476\tvalidation_1-rmspe:0.115789\n",
      "[502]\tvalidation_0-rmse:0.109771\tvalidation_1-rmse:0.136554\tvalidation_0-rmspe:0.121464\tvalidation_1-rmspe:0.115769\n",
      "[503]\tvalidation_0-rmse:0.109733\tvalidation_1-rmse:0.136558\tvalidation_0-rmspe:0.121454\tvalidation_1-rmspe:0.115767\n",
      "[504]\tvalidation_0-rmse:0.109706\tvalidation_1-rmse:0.136552\tvalidation_0-rmspe:0.121021\tvalidation_1-rmspe:0.115763\n",
      "[505]\tvalidation_0-rmse:0.10968\tvalidation_1-rmse:0.136532\tvalidation_0-rmspe:0.120679\tvalidation_1-rmspe:0.115748\n",
      "[506]\tvalidation_0-rmse:0.10968\tvalidation_1-rmse:0.136532\tvalidation_0-rmspe:0.120679\tvalidation_1-rmspe:0.115747\n",
      "[507]\tvalidation_0-rmse:0.109668\tvalidation_1-rmse:0.136527\tvalidation_0-rmspe:0.120671\tvalidation_1-rmspe:0.115745\n",
      "[508]\tvalidation_0-rmse:0.109663\tvalidation_1-rmse:0.136524\tvalidation_0-rmspe:0.120661\tvalidation_1-rmspe:0.115739\n",
      "[509]\tvalidation_0-rmse:0.10966\tvalidation_1-rmse:0.136521\tvalidation_0-rmspe:0.120629\tvalidation_1-rmspe:0.115735\n",
      "[510]\tvalidation_0-rmse:0.109642\tvalidation_1-rmse:0.136506\tvalidation_0-rmspe:0.120608\tvalidation_1-rmspe:0.115706\n",
      "[511]\tvalidation_0-rmse:0.109633\tvalidation_1-rmse:0.136503\tvalidation_0-rmspe:0.120605\tvalidation_1-rmspe:0.115701\n",
      "[512]\tvalidation_0-rmse:0.10963\tvalidation_1-rmse:0.136501\tvalidation_0-rmspe:0.120603\tvalidation_1-rmspe:0.115698\n",
      "[513]\tvalidation_0-rmse:0.109627\tvalidation_1-rmse:0.136517\tvalidation_0-rmspe:0.120603\tvalidation_1-rmspe:0.115706\n",
      "[514]\tvalidation_0-rmse:0.109606\tvalidation_1-rmse:0.136499\tvalidation_0-rmspe:0.120595\tvalidation_1-rmspe:0.11568\n",
      "[515]\tvalidation_0-rmse:0.109584\tvalidation_1-rmse:0.136476\tvalidation_0-rmspe:0.12058\tvalidation_1-rmspe:0.115637\n",
      "[516]\tvalidation_0-rmse:0.109556\tvalidation_1-rmse:0.136477\tvalidation_0-rmspe:0.120569\tvalidation_1-rmspe:0.115636\n",
      "[517]\tvalidation_0-rmse:0.109544\tvalidation_1-rmse:0.13647\tvalidation_0-rmspe:0.120555\tvalidation_1-rmspe:0.115629\n",
      "[518]\tvalidation_0-rmse:0.109501\tvalidation_1-rmse:0.136467\tvalidation_0-rmspe:0.120533\tvalidation_1-rmspe:0.115628\n",
      "[519]\tvalidation_0-rmse:0.109462\tvalidation_1-rmse:0.136463\tvalidation_0-rmspe:0.120509\tvalidation_1-rmspe:0.115625\n",
      "[520]\tvalidation_0-rmse:0.109441\tvalidation_1-rmse:0.136448\tvalidation_0-rmspe:0.120479\tvalidation_1-rmspe:0.115608\n",
      "[521]\tvalidation_0-rmse:0.109427\tvalidation_1-rmse:0.136442\tvalidation_0-rmspe:0.120473\tvalidation_1-rmspe:0.115596\n",
      "[522]\tvalidation_0-rmse:0.109414\tvalidation_1-rmse:0.136434\tvalidation_0-rmspe:0.120459\tvalidation_1-rmspe:0.115587\n",
      "[523]\tvalidation_0-rmse:0.109395\tvalidation_1-rmse:0.136423\tvalidation_0-rmspe:0.12043\tvalidation_1-rmspe:0.115571\n",
      "[524]\tvalidation_0-rmse:0.10931\tvalidation_1-rmse:0.136418\tvalidation_0-rmspe:0.120412\tvalidation_1-rmspe:0.115567\n",
      "[525]\tvalidation_0-rmse:0.109279\tvalidation_1-rmse:0.136412\tvalidation_0-rmspe:0.120378\tvalidation_1-rmspe:0.115558\n",
      "[526]\tvalidation_0-rmse:0.109266\tvalidation_1-rmse:0.13641\tvalidation_0-rmspe:0.120359\tvalidation_1-rmspe:0.115559\n",
      "[527]\tvalidation_0-rmse:0.109258\tvalidation_1-rmse:0.136406\tvalidation_0-rmspe:0.120356\tvalidation_1-rmspe:0.115553\n",
      "[528]\tvalidation_0-rmse:0.109234\tvalidation_1-rmse:0.136391\tvalidation_0-rmspe:0.120337\tvalidation_1-rmspe:0.115534\n",
      "[529]\tvalidation_0-rmse:0.109228\tvalidation_1-rmse:0.136393\tvalidation_0-rmspe:0.12033\tvalidation_1-rmspe:0.115532\n",
      "[530]\tvalidation_0-rmse:0.109201\tvalidation_1-rmse:0.136378\tvalidation_0-rmspe:0.120314\tvalidation_1-rmspe:0.115507\n",
      "[531]\tvalidation_0-rmse:0.109196\tvalidation_1-rmse:0.136376\tvalidation_0-rmspe:0.120313\tvalidation_1-rmspe:0.115504\n",
      "[532]\tvalidation_0-rmse:0.109165\tvalidation_1-rmse:0.136367\tvalidation_0-rmspe:0.120265\tvalidation_1-rmspe:0.115502\n",
      "[533]\tvalidation_0-rmse:0.109162\tvalidation_1-rmse:0.136361\tvalidation_0-rmspe:0.120264\tvalidation_1-rmspe:0.115497\n",
      "[534]\tvalidation_0-rmse:0.109152\tvalidation_1-rmse:0.136359\tvalidation_0-rmspe:0.120262\tvalidation_1-rmspe:0.115493\n",
      "[535]\tvalidation_0-rmse:0.109152\tvalidation_1-rmse:0.136358\tvalidation_0-rmspe:0.12026\tvalidation_1-rmspe:0.115492\n",
      "[536]\tvalidation_0-rmse:0.109129\tvalidation_1-rmse:0.136332\tvalidation_0-rmspe:0.11756\tvalidation_1-rmspe:0.115469\n",
      "[537]\tvalidation_0-rmse:0.109103\tvalidation_1-rmse:0.136325\tvalidation_0-rmspe:0.117547\tvalidation_1-rmspe:0.11545\n",
      "[538]\tvalidation_0-rmse:0.109085\tvalidation_1-rmse:0.136312\tvalidation_0-rmspe:0.117527\tvalidation_1-rmspe:0.11543\n",
      "[539]\tvalidation_0-rmse:0.109059\tvalidation_1-rmse:0.136303\tvalidation_0-rmspe:0.117514\tvalidation_1-rmspe:0.11542\n",
      "[540]\tvalidation_0-rmse:0.109027\tvalidation_1-rmse:0.136296\tvalidation_0-rmspe:0.117466\tvalidation_1-rmspe:0.115405\n",
      "[541]\tvalidation_0-rmse:0.109017\tvalidation_1-rmse:0.136295\tvalidation_0-rmspe:0.11745\tvalidation_1-rmspe:0.115404\n",
      "[542]\tvalidation_0-rmse:0.109005\tvalidation_1-rmse:0.136294\tvalidation_0-rmspe:0.117448\tvalidation_1-rmspe:0.115404\n",
      "[543]\tvalidation_0-rmse:0.108993\tvalidation_1-rmse:0.13628\tvalidation_0-rmspe:0.117437\tvalidation_1-rmspe:0.115383\n",
      "[544]\tvalidation_0-rmse:0.108988\tvalidation_1-rmse:0.136277\tvalidation_0-rmspe:0.117426\tvalidation_1-rmspe:0.115377\n",
      "[545]\tvalidation_0-rmse:0.10897\tvalidation_1-rmse:0.136269\tvalidation_0-rmspe:0.117419\tvalidation_1-rmspe:0.115372\n",
      "[546]\tvalidation_0-rmse:0.108954\tvalidation_1-rmse:0.136267\tvalidation_0-rmspe:0.117386\tvalidation_1-rmspe:0.115373\n",
      "[547]\tvalidation_0-rmse:0.108918\tvalidation_1-rmse:0.13626\tvalidation_0-rmspe:0.117377\tvalidation_1-rmspe:0.115375\n",
      "[548]\tvalidation_0-rmse:0.108915\tvalidation_1-rmse:0.136258\tvalidation_0-rmspe:0.117366\tvalidation_1-rmspe:0.115374\n",
      "[549]\tvalidation_0-rmse:0.108904\tvalidation_1-rmse:0.136262\tvalidation_0-rmspe:0.117364\tvalidation_1-rmspe:0.115373\n",
      "[550]\tvalidation_0-rmse:0.108883\tvalidation_1-rmse:0.136252\tvalidation_0-rmspe:0.117346\tvalidation_1-rmspe:0.115361\n",
      "[551]\tvalidation_0-rmse:0.108862\tvalidation_1-rmse:0.136247\tvalidation_0-rmspe:0.117327\tvalidation_1-rmspe:0.115351\n",
      "[552]\tvalidation_0-rmse:0.108856\tvalidation_1-rmse:0.136246\tvalidation_0-rmspe:0.117325\tvalidation_1-rmspe:0.115353\n",
      "[553]\tvalidation_0-rmse:0.108838\tvalidation_1-rmse:0.13628\tvalidation_0-rmspe:0.117066\tvalidation_1-rmspe:0.115369\n",
      "[554]\tvalidation_0-rmse:0.108837\tvalidation_1-rmse:0.136279\tvalidation_0-rmspe:0.117066\tvalidation_1-rmspe:0.115369\n",
      "[555]\tvalidation_0-rmse:0.108818\tvalidation_1-rmse:0.136253\tvalidation_0-rmspe:0.117054\tvalidation_1-rmspe:0.115347\n",
      "[556]\tvalidation_0-rmse:0.10878\tvalidation_1-rmse:0.13625\tvalidation_0-rmspe:0.117053\tvalidation_1-rmspe:0.115342\n",
      "[557]\tvalidation_0-rmse:0.108773\tvalidation_1-rmse:0.136245\tvalidation_0-rmspe:0.117056\tvalidation_1-rmspe:0.115346\n",
      "[558]\tvalidation_0-rmse:0.108764\tvalidation_1-rmse:0.136241\tvalidation_0-rmspe:0.117032\tvalidation_1-rmspe:0.115343\n",
      "[559]\tvalidation_0-rmse:0.108754\tvalidation_1-rmse:0.136235\tvalidation_0-rmspe:0.117025\tvalidation_1-rmspe:0.115339\n",
      "[560]\tvalidation_0-rmse:0.108715\tvalidation_1-rmse:0.136225\tvalidation_0-rmspe:0.117024\tvalidation_1-rmspe:0.11533\n",
      "[561]\tvalidation_0-rmse:0.108694\tvalidation_1-rmse:0.13622\tvalidation_0-rmspe:0.117021\tvalidation_1-rmspe:0.115322\n",
      "[562]\tvalidation_0-rmse:0.108681\tvalidation_1-rmse:0.136227\tvalidation_0-rmspe:0.117021\tvalidation_1-rmspe:0.115327\n",
      "[563]\tvalidation_0-rmse:0.108676\tvalidation_1-rmse:0.136224\tvalidation_0-rmspe:0.117015\tvalidation_1-rmspe:0.115323\n",
      "[564]\tvalidation_0-rmse:0.108659\tvalidation_1-rmse:0.136223\tvalidation_0-rmspe:0.11701\tvalidation_1-rmspe:0.115323\n",
      "[565]\tvalidation_0-rmse:0.10865\tvalidation_1-rmse:0.136221\tvalidation_0-rmspe:0.116997\tvalidation_1-rmspe:0.115318\n",
      "[566]\tvalidation_0-rmse:0.108631\tvalidation_1-rmse:0.136217\tvalidation_0-rmspe:0.116984\tvalidation_1-rmspe:0.115314\n",
      "[567]\tvalidation_0-rmse:0.108611\tvalidation_1-rmse:0.136218\tvalidation_0-rmspe:0.116984\tvalidation_1-rmspe:0.115323\n",
      "[568]\tvalidation_0-rmse:0.108602\tvalidation_1-rmse:0.136214\tvalidation_0-rmspe:0.116974\tvalidation_1-rmspe:0.115317\n",
      "[569]\tvalidation_0-rmse:0.108562\tvalidation_1-rmse:0.136206\tvalidation_0-rmspe:0.116635\tvalidation_1-rmspe:0.115315\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[570]\tvalidation_0-rmse:0.108556\tvalidation_1-rmse:0.136206\tvalidation_0-rmspe:0.11663\tvalidation_1-rmspe:0.115312\n",
      "[571]\tvalidation_0-rmse:0.108551\tvalidation_1-rmse:0.136203\tvalidation_0-rmspe:0.116627\tvalidation_1-rmspe:0.11531\n",
      "[572]\tvalidation_0-rmse:0.108535\tvalidation_1-rmse:0.136248\tvalidation_0-rmspe:0.116614\tvalidation_1-rmspe:0.115318\n",
      "[573]\tvalidation_0-rmse:0.108527\tvalidation_1-rmse:0.136251\tvalidation_0-rmspe:0.116604\tvalidation_1-rmspe:0.115316\n",
      "[574]\tvalidation_0-rmse:0.108523\tvalidation_1-rmse:0.136249\tvalidation_0-rmspe:0.1166\tvalidation_1-rmspe:0.115315\n",
      "[575]\tvalidation_0-rmse:0.108463\tvalidation_1-rmse:0.136293\tvalidation_0-rmspe:0.116594\tvalidation_1-rmspe:0.11535\n",
      "[576]\tvalidation_0-rmse:0.108443\tvalidation_1-rmse:0.136282\tvalidation_0-rmspe:0.116574\tvalidation_1-rmspe:0.115344\n",
      "[577]\tvalidation_0-rmse:0.108421\tvalidation_1-rmse:0.136277\tvalidation_0-rmspe:0.116557\tvalidation_1-rmspe:0.115334\n",
      "[578]\tvalidation_0-rmse:0.108407\tvalidation_1-rmse:0.136265\tvalidation_0-rmspe:0.11654\tvalidation_1-rmspe:0.11532\n",
      "[579]\tvalidation_0-rmse:0.108382\tvalidation_1-rmse:0.136273\tvalidation_0-rmspe:0.116538\tvalidation_1-rmspe:0.115317\n",
      "[580]\tvalidation_0-rmse:0.108368\tvalidation_1-rmse:0.136262\tvalidation_0-rmspe:0.116525\tvalidation_1-rmspe:0.115305\n",
      "[581]\tvalidation_0-rmse:0.108367\tvalidation_1-rmse:0.136259\tvalidation_0-rmspe:0.116523\tvalidation_1-rmspe:0.115301\n",
      "[582]\tvalidation_0-rmse:0.108366\tvalidation_1-rmse:0.136259\tvalidation_0-rmspe:0.116521\tvalidation_1-rmspe:0.115301\n",
      "[583]\tvalidation_0-rmse:0.108351\tvalidation_1-rmse:0.136248\tvalidation_0-rmspe:0.116514\tvalidation_1-rmspe:0.115265\n",
      "[584]\tvalidation_0-rmse:0.108347\tvalidation_1-rmse:0.136246\tvalidation_0-rmspe:0.116515\tvalidation_1-rmspe:0.115265\n",
      "[585]\tvalidation_0-rmse:0.10833\tvalidation_1-rmse:0.136246\tvalidation_0-rmspe:0.116506\tvalidation_1-rmspe:0.115261\n",
      "[586]\tvalidation_0-rmse:0.108323\tvalidation_1-rmse:0.136245\tvalidation_0-rmspe:0.116504\tvalidation_1-rmspe:0.115257\n",
      "[587]\tvalidation_0-rmse:0.108318\tvalidation_1-rmse:0.136239\tvalidation_0-rmspe:0.116497\tvalidation_1-rmspe:0.115246\n",
      "[588]\tvalidation_0-rmse:0.108313\tvalidation_1-rmse:0.136238\tvalidation_0-rmspe:0.116493\tvalidation_1-rmspe:0.115241\n",
      "[589]\tvalidation_0-rmse:0.108262\tvalidation_1-rmse:0.136237\tvalidation_0-rmspe:0.116487\tvalidation_1-rmspe:0.115246\n",
      "[590]\tvalidation_0-rmse:0.108256\tvalidation_1-rmse:0.136234\tvalidation_0-rmspe:0.116484\tvalidation_1-rmspe:0.115242\n",
      "[591]\tvalidation_0-rmse:0.108253\tvalidation_1-rmse:0.136235\tvalidation_0-rmspe:0.116484\tvalidation_1-rmspe:0.115243\n",
      "[592]\tvalidation_0-rmse:0.108246\tvalidation_1-rmse:0.136235\tvalidation_0-rmspe:0.116483\tvalidation_1-rmspe:0.115244\n",
      "[593]\tvalidation_0-rmse:0.108245\tvalidation_1-rmse:0.136241\tvalidation_0-rmspe:0.116481\tvalidation_1-rmspe:0.115244\n",
      "[594]\tvalidation_0-rmse:0.108242\tvalidation_1-rmse:0.136237\tvalidation_0-rmspe:0.116479\tvalidation_1-rmspe:0.115242\n",
      "[595]\tvalidation_0-rmse:0.10823\tvalidation_1-rmse:0.136233\tvalidation_0-rmspe:0.116474\tvalidation_1-rmspe:0.115239\n",
      "[596]\tvalidation_0-rmse:0.108208\tvalidation_1-rmse:0.136232\tvalidation_0-rmspe:0.11646\tvalidation_1-rmspe:0.115254\n",
      "[597]\tvalidation_0-rmse:0.108184\tvalidation_1-rmse:0.136212\tvalidation_0-rmspe:0.116439\tvalidation_1-rmspe:0.115237\n",
      "[598]\tvalidation_0-rmse:0.108174\tvalidation_1-rmse:0.136208\tvalidation_0-rmspe:0.116435\tvalidation_1-rmspe:0.115229\n",
      "[599]\tvalidation_0-rmse:0.108173\tvalidation_1-rmse:0.136207\tvalidation_0-rmspe:0.116434\tvalidation_1-rmspe:0.115227\n",
      "[600]\tvalidation_0-rmse:0.10816\tvalidation_1-rmse:0.136206\tvalidation_0-rmspe:0.116433\tvalidation_1-rmspe:0.115227\n",
      "[601]\tvalidation_0-rmse:0.108157\tvalidation_1-rmse:0.136204\tvalidation_0-rmspe:0.116434\tvalidation_1-rmspe:0.115225\n",
      "[602]\tvalidation_0-rmse:0.108152\tvalidation_1-rmse:0.136202\tvalidation_0-rmspe:0.116434\tvalidation_1-rmspe:0.115225\n",
      "[603]\tvalidation_0-rmse:0.10815\tvalidation_1-rmse:0.136202\tvalidation_0-rmspe:0.11643\tvalidation_1-rmspe:0.115226\n",
      "[604]\tvalidation_0-rmse:0.108136\tvalidation_1-rmse:0.1362\tvalidation_0-rmspe:0.116425\tvalidation_1-rmspe:0.115225\n",
      "[605]\tvalidation_0-rmse:0.108122\tvalidation_1-rmse:0.136192\tvalidation_0-rmspe:0.116422\tvalidation_1-rmspe:0.115228\n",
      "[606]\tvalidation_0-rmse:0.10812\tvalidation_1-rmse:0.136191\tvalidation_0-rmspe:0.116423\tvalidation_1-rmspe:0.115227\n",
      "[607]\tvalidation_0-rmse:0.108108\tvalidation_1-rmse:0.136182\tvalidation_0-rmspe:0.116412\tvalidation_1-rmspe:0.115217\n",
      "[608]\tvalidation_0-rmse:0.108073\tvalidation_1-rmse:0.136172\tvalidation_0-rmspe:0.116404\tvalidation_1-rmspe:0.115213\n",
      "[609]\tvalidation_0-rmse:0.10804\tvalidation_1-rmse:0.136181\tvalidation_0-rmspe:0.116382\tvalidation_1-rmspe:0.115226\n",
      "[610]\tvalidation_0-rmse:0.10804\tvalidation_1-rmse:0.13618\tvalidation_0-rmspe:0.116387\tvalidation_1-rmspe:0.115227\n",
      "[611]\tvalidation_0-rmse:0.108033\tvalidation_1-rmse:0.136179\tvalidation_0-rmspe:0.116296\tvalidation_1-rmspe:0.115226\n",
      "[612]\tvalidation_0-rmse:0.108027\tvalidation_1-rmse:0.136176\tvalidation_0-rmspe:0.116292\tvalidation_1-rmspe:0.115219\n",
      "[613]\tvalidation_0-rmse:0.108012\tvalidation_1-rmse:0.136171\tvalidation_0-rmspe:0.116282\tvalidation_1-rmspe:0.115214\n",
      "[614]\tvalidation_0-rmse:0.108005\tvalidation_1-rmse:0.136165\tvalidation_0-rmspe:0.116263\tvalidation_1-rmspe:0.115204\n",
      "[615]\tvalidation_0-rmse:0.107994\tvalidation_1-rmse:0.136154\tvalidation_0-rmspe:0.11626\tvalidation_1-rmspe:0.115193\n",
      "[616]\tvalidation_0-rmse:0.107977\tvalidation_1-rmse:0.13615\tvalidation_0-rmspe:0.116252\tvalidation_1-rmspe:0.115189\n",
      "[617]\tvalidation_0-rmse:0.107958\tvalidation_1-rmse:0.136147\tvalidation_0-rmspe:0.116249\tvalidation_1-rmspe:0.115188\n",
      "[618]\tvalidation_0-rmse:0.107947\tvalidation_1-rmse:0.136146\tvalidation_0-rmspe:0.116232\tvalidation_1-rmspe:0.115184\n",
      "[619]\tvalidation_0-rmse:0.107943\tvalidation_1-rmse:0.136145\tvalidation_0-rmspe:0.116231\tvalidation_1-rmspe:0.115183\n",
      "[620]\tvalidation_0-rmse:0.107936\tvalidation_1-rmse:0.136145\tvalidation_0-rmspe:0.116229\tvalidation_1-rmspe:0.115182\n",
      "[621]\tvalidation_0-rmse:0.107911\tvalidation_1-rmse:0.136131\tvalidation_0-rmspe:0.116205\tvalidation_1-rmspe:0.115166\n",
      "[622]\tvalidation_0-rmse:0.107888\tvalidation_1-rmse:0.13613\tvalidation_0-rmspe:0.116203\tvalidation_1-rmspe:0.115167\n",
      "[623]\tvalidation_0-rmse:0.107881\tvalidation_1-rmse:0.136133\tvalidation_0-rmspe:0.116193\tvalidation_1-rmspe:0.115169\n",
      "[624]\tvalidation_0-rmse:0.107851\tvalidation_1-rmse:0.136137\tvalidation_0-rmspe:0.116174\tvalidation_1-rmspe:0.115172\n",
      "[625]\tvalidation_0-rmse:0.107841\tvalidation_1-rmse:0.136136\tvalidation_0-rmspe:0.116161\tvalidation_1-rmspe:0.115172\n",
      "[626]\tvalidation_0-rmse:0.107835\tvalidation_1-rmse:0.136136\tvalidation_0-rmspe:0.116149\tvalidation_1-rmspe:0.115173\n",
      "[627]\tvalidation_0-rmse:0.107786\tvalidation_1-rmse:0.136138\tvalidation_0-rmspe:0.116138\tvalidation_1-rmspe:0.115178\n",
      "[628]\tvalidation_0-rmse:0.107781\tvalidation_1-rmse:0.13614\tvalidation_0-rmspe:0.11612\tvalidation_1-rmspe:0.115181\n",
      "[629]\tvalidation_0-rmse:0.107768\tvalidation_1-rmse:0.136136\tvalidation_0-rmspe:0.116118\tvalidation_1-rmspe:0.115177\n",
      "[630]\tvalidation_0-rmse:0.107764\tvalidation_1-rmse:0.136137\tvalidation_0-rmspe:0.116114\tvalidation_1-rmspe:0.115178\n",
      "[631]\tvalidation_0-rmse:0.107756\tvalidation_1-rmse:0.136137\tvalidation_0-rmspe:0.1161\tvalidation_1-rmspe:0.115165\n",
      "[632]\tvalidation_0-rmse:0.107717\tvalidation_1-rmse:0.136139\tvalidation_0-rmspe:0.116097\tvalidation_1-rmspe:0.115167\n",
      "[633]\tvalidation_0-rmse:0.107697\tvalidation_1-rmse:0.13613\tvalidation_0-rmspe:0.11609\tvalidation_1-rmspe:0.115157\n",
      "[634]\tvalidation_0-rmse:0.107657\tvalidation_1-rmse:0.136108\tvalidation_0-rmspe:0.116067\tvalidation_1-rmspe:0.115128\n",
      "[635]\tvalidation_0-rmse:0.107621\tvalidation_1-rmse:0.136099\tvalidation_0-rmspe:0.116054\tvalidation_1-rmspe:0.115118\n",
      "[636]\tvalidation_0-rmse:0.107611\tvalidation_1-rmse:0.1361\tvalidation_0-rmspe:0.116053\tvalidation_1-rmspe:0.115119\n",
      "[637]\tvalidation_0-rmse:0.107604\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.116041\tvalidation_1-rmspe:0.115023\n",
      "[638]\tvalidation_0-rmse:0.107598\tvalidation_1-rmse:0.136079\tvalidation_0-rmspe:0.116023\tvalidation_1-rmspe:0.115018\n",
      "[639]\tvalidation_0-rmse:0.107596\tvalidation_1-rmse:0.13608\tvalidation_0-rmspe:0.116022\tvalidation_1-rmspe:0.11502\n",
      "[640]\tvalidation_0-rmse:0.107587\tvalidation_1-rmse:0.136079\tvalidation_0-rmspe:0.11601\tvalidation_1-rmspe:0.115015\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[641]\tvalidation_0-rmse:0.107577\tvalidation_1-rmse:0.136076\tvalidation_0-rmspe:0.116006\tvalidation_1-rmspe:0.115012\n",
      "[642]\tvalidation_0-rmse:0.107573\tvalidation_1-rmse:0.136076\tvalidation_0-rmspe:0.116005\tvalidation_1-rmspe:0.115012\n",
      "[643]\tvalidation_0-rmse:0.107559\tvalidation_1-rmse:0.136069\tvalidation_0-rmspe:0.115997\tvalidation_1-rmspe:0.115007\n",
      "[644]\tvalidation_0-rmse:0.107495\tvalidation_1-rmse:0.136068\tvalidation_0-rmspe:0.115995\tvalidation_1-rmspe:0.114999\n",
      "[645]\tvalidation_0-rmse:0.10749\tvalidation_1-rmse:0.136065\tvalidation_0-rmspe:0.115991\tvalidation_1-rmspe:0.114996\n",
      "[646]\tvalidation_0-rmse:0.107473\tvalidation_1-rmse:0.136066\tvalidation_0-rmspe:0.115988\tvalidation_1-rmspe:0.114995\n",
      "[647]\tvalidation_0-rmse:0.107461\tvalidation_1-rmse:0.13606\tvalidation_0-rmspe:0.115972\tvalidation_1-rmspe:0.114983\n",
      "[648]\tvalidation_0-rmse:0.107461\tvalidation_1-rmse:0.13606\tvalidation_0-rmspe:0.115972\tvalidation_1-rmspe:0.114982\n",
      "[649]\tvalidation_0-rmse:0.107454\tvalidation_1-rmse:0.136054\tvalidation_0-rmspe:0.115968\tvalidation_1-rmspe:0.114975\n",
      "[650]\tvalidation_0-rmse:0.107425\tvalidation_1-rmse:0.136053\tvalidation_0-rmspe:0.11593\tvalidation_1-rmspe:0.114974\n",
      "[651]\tvalidation_0-rmse:0.107396\tvalidation_1-rmse:0.136053\tvalidation_0-rmspe:0.115923\tvalidation_1-rmspe:0.114974\n",
      "[652]\tvalidation_0-rmse:0.107379\tvalidation_1-rmse:0.136047\tvalidation_0-rmspe:0.115915\tvalidation_1-rmspe:0.114975\n",
      "[653]\tvalidation_0-rmse:0.107369\tvalidation_1-rmse:0.136047\tvalidation_0-rmspe:0.11591\tvalidation_1-rmspe:0.114978\n",
      "[654]\tvalidation_0-rmse:0.107365\tvalidation_1-rmse:0.136048\tvalidation_0-rmspe:0.115897\tvalidation_1-rmspe:0.11497\n",
      "[655]\tvalidation_0-rmse:0.107353\tvalidation_1-rmse:0.13604\tvalidation_0-rmspe:0.115879\tvalidation_1-rmspe:0.114957\n",
      "[656]\tvalidation_0-rmse:0.10734\tvalidation_1-rmse:0.13604\tvalidation_0-rmspe:0.115873\tvalidation_1-rmspe:0.114956\n",
      "[657]\tvalidation_0-rmse:0.107333\tvalidation_1-rmse:0.136037\tvalidation_0-rmspe:0.115865\tvalidation_1-rmspe:0.114944\n",
      "[658]\tvalidation_0-rmse:0.107325\tvalidation_1-rmse:0.136033\tvalidation_0-rmspe:0.115864\tvalidation_1-rmspe:0.114943\n",
      "[659]\tvalidation_0-rmse:0.107295\tvalidation_1-rmse:0.136028\tvalidation_0-rmspe:0.115833\tvalidation_1-rmspe:0.114928\n",
      "[660]\tvalidation_0-rmse:0.107295\tvalidation_1-rmse:0.136028\tvalidation_0-rmspe:0.115831\tvalidation_1-rmspe:0.114927\n",
      "[661]\tvalidation_0-rmse:0.107272\tvalidation_1-rmse:0.136024\tvalidation_0-rmspe:0.115834\tvalidation_1-rmspe:0.114918\n",
      "[662]\tvalidation_0-rmse:0.107244\tvalidation_1-rmse:0.135998\tvalidation_0-rmspe:0.115807\tvalidation_1-rmspe:0.114883\n",
      "[663]\tvalidation_0-rmse:0.107239\tvalidation_1-rmse:0.135997\tvalidation_0-rmspe:0.115806\tvalidation_1-rmspe:0.114883\n",
      "[664]\tvalidation_0-rmse:0.107239\tvalidation_1-rmse:0.135997\tvalidation_0-rmspe:0.115806\tvalidation_1-rmspe:0.114883\n",
      "[665]\tvalidation_0-rmse:0.107183\tvalidation_1-rmse:0.136087\tvalidation_0-rmspe:0.115804\tvalidation_1-rmspe:0.114944\n",
      "[666]\tvalidation_0-rmse:0.10718\tvalidation_1-rmse:0.136084\tvalidation_0-rmspe:0.115801\tvalidation_1-rmspe:0.114939\n",
      "[667]\tvalidation_0-rmse:0.10717\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.11579\tvalidation_1-rmspe:0.114929\n",
      "[668]\tvalidation_0-rmse:0.10715\tvalidation_1-rmse:0.136069\tvalidation_0-rmspe:0.115777\tvalidation_1-rmspe:0.114922\n",
      "[669]\tvalidation_0-rmse:0.107145\tvalidation_1-rmse:0.136067\tvalidation_0-rmspe:0.115775\tvalidation_1-rmspe:0.114919\n",
      "[670]\tvalidation_0-rmse:0.107137\tvalidation_1-rmse:0.136064\tvalidation_0-rmspe:0.115755\tvalidation_1-rmspe:0.114918\n",
      "[671]\tvalidation_0-rmse:0.107133\tvalidation_1-rmse:0.136225\tvalidation_0-rmspe:0.115753\tvalidation_1-rmspe:0.114919\n",
      "[672]\tvalidation_0-rmse:0.107122\tvalidation_1-rmse:0.136215\tvalidation_0-rmspe:0.115747\tvalidation_1-rmspe:0.114912\n",
      "[673]\tvalidation_0-rmse:0.1071\tvalidation_1-rmse:0.136215\tvalidation_0-rmspe:0.115754\tvalidation_1-rmspe:0.114919\n",
      "[674]\tvalidation_0-rmse:0.107085\tvalidation_1-rmse:0.136224\tvalidation_0-rmspe:0.115715\tvalidation_1-rmspe:0.114923\n",
      "[675]\tvalidation_0-rmse:0.107081\tvalidation_1-rmse:0.136224\tvalidation_0-rmspe:0.115712\tvalidation_1-rmspe:0.114925\n",
      "[676]\tvalidation_0-rmse:0.107076\tvalidation_1-rmse:0.136219\tvalidation_0-rmspe:0.115709\tvalidation_1-rmspe:0.11492\n",
      "[677]\tvalidation_0-rmse:0.107076\tvalidation_1-rmse:0.136219\tvalidation_0-rmspe:0.115709\tvalidation_1-rmspe:0.11492\n",
      "[678]\tvalidation_0-rmse:0.10707\tvalidation_1-rmse:0.136217\tvalidation_0-rmspe:0.115702\tvalidation_1-rmspe:0.114919\n",
      "[679]\tvalidation_0-rmse:0.107059\tvalidation_1-rmse:0.136216\tvalidation_0-rmspe:0.115697\tvalidation_1-rmspe:0.114922\n",
      "[680]\tvalidation_0-rmse:0.107051\tvalidation_1-rmse:0.136221\tvalidation_0-rmspe:0.115693\tvalidation_1-rmspe:0.114919\n",
      "[681]\tvalidation_0-rmse:0.107051\tvalidation_1-rmse:0.13622\tvalidation_0-rmspe:0.115691\tvalidation_1-rmspe:0.114917\n",
      "[682]\tvalidation_0-rmse:0.10705\tvalidation_1-rmse:0.13622\tvalidation_0-rmspe:0.11569\tvalidation_1-rmspe:0.114916\n",
      "[683]\tvalidation_0-rmse:0.107038\tvalidation_1-rmse:0.136223\tvalidation_0-rmspe:0.115658\tvalidation_1-rmspe:0.114917\n",
      "[684]\tvalidation_0-rmse:0.107031\tvalidation_1-rmse:0.136221\tvalidation_0-rmspe:0.115656\tvalidation_1-rmspe:0.114916\n",
      "[685]\tvalidation_0-rmse:0.107029\tvalidation_1-rmse:0.136222\tvalidation_0-rmspe:0.115652\tvalidation_1-rmspe:0.114918\n",
      "[686]\tvalidation_0-rmse:0.106987\tvalidation_1-rmse:0.136221\tvalidation_0-rmspe:0.115615\tvalidation_1-rmspe:0.114925\n",
      "[687]\tvalidation_0-rmse:0.106951\tvalidation_1-rmse:0.136212\tvalidation_0-rmspe:0.115611\tvalidation_1-rmspe:0.114905\n",
      "[688]\tvalidation_0-rmse:0.106943\tvalidation_1-rmse:0.136209\tvalidation_0-rmspe:0.115614\tvalidation_1-rmspe:0.114904\n",
      "[689]\tvalidation_0-rmse:0.10694\tvalidation_1-rmse:0.136207\tvalidation_0-rmspe:0.115607\tvalidation_1-rmspe:0.1149\n",
      "[690]\tvalidation_0-rmse:0.106929\tvalidation_1-rmse:0.136207\tvalidation_0-rmspe:0.115607\tvalidation_1-rmspe:0.114901\n",
      "[691]\tvalidation_0-rmse:0.106922\tvalidation_1-rmse:0.136204\tvalidation_0-rmspe:0.115604\tvalidation_1-rmspe:0.114899\n",
      "[692]\tvalidation_0-rmse:0.106918\tvalidation_1-rmse:0.136206\tvalidation_0-rmspe:0.115589\tvalidation_1-rmspe:0.114902\n",
      "[693]\tvalidation_0-rmse:0.106917\tvalidation_1-rmse:0.136206\tvalidation_0-rmspe:0.115588\tvalidation_1-rmspe:0.114902\n",
      "[694]\tvalidation_0-rmse:0.10691\tvalidation_1-rmse:0.136205\tvalidation_0-rmspe:0.115585\tvalidation_1-rmspe:0.114897\n",
      "[695]\tvalidation_0-rmse:0.106899\tvalidation_1-rmse:0.136203\tvalidation_0-rmspe:0.115581\tvalidation_1-rmspe:0.114895\n",
      "[696]\tvalidation_0-rmse:0.106899\tvalidation_1-rmse:0.1362\tvalidation_0-rmspe:0.115578\tvalidation_1-rmspe:0.114891\n",
      "[697]\tvalidation_0-rmse:0.106881\tvalidation_1-rmse:0.136188\tvalidation_0-rmspe:0.11556\tvalidation_1-rmspe:0.114871\n",
      "[698]\tvalidation_0-rmse:0.106872\tvalidation_1-rmse:0.136189\tvalidation_0-rmspe:0.115555\tvalidation_1-rmspe:0.114869\n",
      "[699]\tvalidation_0-rmse:0.106872\tvalidation_1-rmse:0.136189\tvalidation_0-rmspe:0.115555\tvalidation_1-rmspe:0.114869\n",
      "[700]\tvalidation_0-rmse:0.106869\tvalidation_1-rmse:0.136189\tvalidation_0-rmspe:0.11555\tvalidation_1-rmspe:0.114866\n",
      "[701]\tvalidation_0-rmse:0.106868\tvalidation_1-rmse:0.13619\tvalidation_0-rmspe:0.115551\tvalidation_1-rmspe:0.114871\n",
      "[702]\tvalidation_0-rmse:0.106849\tvalidation_1-rmse:0.136187\tvalidation_0-rmspe:0.115004\tvalidation_1-rmspe:0.114864\n",
      "[703]\tvalidation_0-rmse:0.106843\tvalidation_1-rmse:0.136182\tvalidation_0-rmspe:0.114997\tvalidation_1-rmspe:0.114858\n",
      "[704]\tvalidation_0-rmse:0.106828\tvalidation_1-rmse:0.136174\tvalidation_0-rmspe:0.114976\tvalidation_1-rmspe:0.114855\n",
      "[705]\tvalidation_0-rmse:0.106822\tvalidation_1-rmse:0.136175\tvalidation_0-rmspe:0.114978\tvalidation_1-rmspe:0.114857\n",
      "[706]\tvalidation_0-rmse:0.106819\tvalidation_1-rmse:0.136175\tvalidation_0-rmspe:0.114975\tvalidation_1-rmspe:0.114856\n",
      "[707]\tvalidation_0-rmse:0.106817\tvalidation_1-rmse:0.136174\tvalidation_0-rmspe:0.114971\tvalidation_1-rmspe:0.114858\n",
      "[708]\tvalidation_0-rmse:0.106809\tvalidation_1-rmse:0.13617\tvalidation_0-rmspe:0.11497\tvalidation_1-rmspe:0.114856\n",
      "[709]\tvalidation_0-rmse:0.106786\tvalidation_1-rmse:0.136166\tvalidation_0-rmspe:0.114956\tvalidation_1-rmspe:0.114852\n",
      "[710]\tvalidation_0-rmse:0.106786\tvalidation_1-rmse:0.136166\tvalidation_0-rmspe:0.114958\tvalidation_1-rmspe:0.114854\n",
      "[711]\tvalidation_0-rmse:0.106781\tvalidation_1-rmse:0.136163\tvalidation_0-rmspe:0.114953\tvalidation_1-rmspe:0.114853\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[712]\tvalidation_0-rmse:0.106777\tvalidation_1-rmse:0.136159\tvalidation_0-rmspe:0.114954\tvalidation_1-rmspe:0.11485\n",
      "[713]\tvalidation_0-rmse:0.106774\tvalidation_1-rmse:0.136154\tvalidation_0-rmspe:0.11495\tvalidation_1-rmspe:0.114842\n",
      "[714]\tvalidation_0-rmse:0.10676\tvalidation_1-rmse:0.136161\tvalidation_0-rmspe:0.114948\tvalidation_1-rmspe:0.11485\n",
      "[715]\tvalidation_0-rmse:0.106757\tvalidation_1-rmse:0.136168\tvalidation_0-rmspe:0.114946\tvalidation_1-rmspe:0.114852\n",
      "[716]\tvalidation_0-rmse:0.106752\tvalidation_1-rmse:0.136185\tvalidation_0-rmspe:0.114945\tvalidation_1-rmspe:0.114864\n",
      "[717]\tvalidation_0-rmse:0.106751\tvalidation_1-rmse:0.136188\tvalidation_0-rmspe:0.114943\tvalidation_1-rmspe:0.114864\n",
      "[718]\tvalidation_0-rmse:0.106726\tvalidation_1-rmse:0.136184\tvalidation_0-rmspe:0.114935\tvalidation_1-rmspe:0.114862\n",
      "[719]\tvalidation_0-rmse:0.106717\tvalidation_1-rmse:0.13618\tvalidation_0-rmspe:0.114932\tvalidation_1-rmspe:0.114857\n",
      "[720]\tvalidation_0-rmse:0.106714\tvalidation_1-rmse:0.13618\tvalidation_0-rmspe:0.11493\tvalidation_1-rmspe:0.114858\n",
      "[721]\tvalidation_0-rmse:0.106696\tvalidation_1-rmse:0.136179\tvalidation_0-rmspe:0.114927\tvalidation_1-rmspe:0.114859\n",
      "[722]\tvalidation_0-rmse:0.10669\tvalidation_1-rmse:0.136183\tvalidation_0-rmspe:0.114925\tvalidation_1-rmspe:0.114867\n",
      "[723]\tvalidation_0-rmse:0.106685\tvalidation_1-rmse:0.136178\tvalidation_0-rmspe:0.114921\tvalidation_1-rmspe:0.11486\n",
      "[724]\tvalidation_0-rmse:0.106682\tvalidation_1-rmse:0.136175\tvalidation_0-rmspe:0.114914\tvalidation_1-rmspe:0.114852\n",
      "[725]\tvalidation_0-rmse:0.106681\tvalidation_1-rmse:0.136173\tvalidation_0-rmspe:0.114916\tvalidation_1-rmspe:0.114853\n",
      "[726]\tvalidation_0-rmse:0.106649\tvalidation_1-rmse:0.136169\tvalidation_0-rmspe:0.114911\tvalidation_1-rmspe:0.114846\n",
      "[727]\tvalidation_0-rmse:0.106627\tvalidation_1-rmse:0.136103\tvalidation_0-rmspe:0.114809\tvalidation_1-rmspe:0.114487\n",
      "[728]\tvalidation_0-rmse:0.106626\tvalidation_1-rmse:0.136101\tvalidation_0-rmspe:0.114808\tvalidation_1-rmspe:0.114484\n",
      "[729]\tvalidation_0-rmse:0.10662\tvalidation_1-rmse:0.136097\tvalidation_0-rmspe:0.114808\tvalidation_1-rmspe:0.114484\n",
      "[730]\tvalidation_0-rmse:0.106604\tvalidation_1-rmse:0.136094\tvalidation_0-rmspe:0.114748\tvalidation_1-rmspe:0.114479\n",
      "[731]\tvalidation_0-rmse:0.106599\tvalidation_1-rmse:0.136093\tvalidation_0-rmspe:0.114746\tvalidation_1-rmspe:0.114476\n",
      "[732]\tvalidation_0-rmse:0.10659\tvalidation_1-rmse:0.136086\tvalidation_0-rmspe:0.114736\tvalidation_1-rmspe:0.114469\n",
      "[733]\tvalidation_0-rmse:0.106585\tvalidation_1-rmse:0.136083\tvalidation_0-rmspe:0.114733\tvalidation_1-rmspe:0.114468\n",
      "[734]\tvalidation_0-rmse:0.106577\tvalidation_1-rmse:0.136093\tvalidation_0-rmspe:0.114728\tvalidation_1-rmspe:0.114534\n",
      "[735]\tvalidation_0-rmse:0.106574\tvalidation_1-rmse:0.136092\tvalidation_0-rmspe:0.114731\tvalidation_1-rmspe:0.114538\n",
      "[736]\tvalidation_0-rmse:0.106568\tvalidation_1-rmse:0.136097\tvalidation_0-rmspe:0.11466\tvalidation_1-rmspe:0.114536\n",
      "[737]\tvalidation_0-rmse:0.10654\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.114644\tvalidation_1-rmspe:0.114507\n",
      "[738]\tvalidation_0-rmse:0.106532\tvalidation_1-rmse:0.136071\tvalidation_0-rmspe:0.11465\tvalidation_1-rmspe:0.114509\n",
      "[739]\tvalidation_0-rmse:0.106524\tvalidation_1-rmse:0.136065\tvalidation_0-rmspe:0.114642\tvalidation_1-rmspe:0.114498\n",
      "[740]\tvalidation_0-rmse:0.106508\tvalidation_1-rmse:0.136068\tvalidation_0-rmspe:0.11464\tvalidation_1-rmspe:0.114499\n",
      "[741]\tvalidation_0-rmse:0.106499\tvalidation_1-rmse:0.136069\tvalidation_0-rmspe:0.114637\tvalidation_1-rmspe:0.114498\n",
      "[742]\tvalidation_0-rmse:0.106453\tvalidation_1-rmse:0.136089\tvalidation_0-rmspe:0.114608\tvalidation_1-rmspe:0.114537\n",
      "[743]\tvalidation_0-rmse:0.106452\tvalidation_1-rmse:0.136086\tvalidation_0-rmspe:0.114611\tvalidation_1-rmspe:0.11453\n",
      "[744]\tvalidation_0-rmse:0.106445\tvalidation_1-rmse:0.13609\tvalidation_0-rmspe:0.114609\tvalidation_1-rmspe:0.114533\n",
      "[745]\tvalidation_0-rmse:0.10644\tvalidation_1-rmse:0.136084\tvalidation_0-rmspe:0.114592\tvalidation_1-rmspe:0.114533\n",
      "[746]\tvalidation_0-rmse:0.106434\tvalidation_1-rmse:0.13608\tvalidation_0-rmspe:0.11459\tvalidation_1-rmspe:0.114529\n",
      "[747]\tvalidation_0-rmse:0.10643\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.114579\tvalidation_1-rmspe:0.114533\n",
      "[748]\tvalidation_0-rmse:0.106422\tvalidation_1-rmse:0.136073\tvalidation_0-rmspe:0.114568\tvalidation_1-rmspe:0.114521\n",
      "[749]\tvalidation_0-rmse:0.106419\tvalidation_1-rmse:0.136076\tvalidation_0-rmspe:0.114562\tvalidation_1-rmspe:0.114509\n",
      "[750]\tvalidation_0-rmse:0.106385\tvalidation_1-rmse:0.136076\tvalidation_0-rmspe:0.114546\tvalidation_1-rmspe:0.114509\n",
      "[751]\tvalidation_0-rmse:0.106383\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.114543\tvalidation_1-rmspe:0.114507\n",
      "[752]\tvalidation_0-rmse:0.106379\tvalidation_1-rmse:0.136071\tvalidation_0-rmspe:0.114539\tvalidation_1-rmspe:0.114502\n",
      "[753]\tvalidation_0-rmse:0.10633\tvalidation_1-rmse:0.136069\tvalidation_0-rmspe:0.114505\tvalidation_1-rmspe:0.114496\n",
      "[754]\tvalidation_0-rmse:0.106328\tvalidation_1-rmse:0.136068\tvalidation_0-rmspe:0.114503\tvalidation_1-rmspe:0.114495\n",
      "[755]\tvalidation_0-rmse:0.106316\tvalidation_1-rmse:0.136081\tvalidation_0-rmspe:0.114478\tvalidation_1-rmspe:0.114501\n",
      "[756]\tvalidation_0-rmse:0.106308\tvalidation_1-rmse:0.136078\tvalidation_0-rmspe:0.114474\tvalidation_1-rmspe:0.114498\n",
      "[757]\tvalidation_0-rmse:0.106301\tvalidation_1-rmse:0.136078\tvalidation_0-rmspe:0.114473\tvalidation_1-rmspe:0.114496\n",
      "[758]\tvalidation_0-rmse:0.106293\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.114467\tvalidation_1-rmspe:0.114489\n",
      "[759]\tvalidation_0-rmse:0.106255\tvalidation_1-rmse:0.136071\tvalidation_0-rmspe:0.114453\tvalidation_1-rmspe:0.114487\n",
      "[760]\tvalidation_0-rmse:0.106233\tvalidation_1-rmse:0.136053\tvalidation_0-rmspe:0.114437\tvalidation_1-rmspe:0.114475\n",
      "[761]\tvalidation_0-rmse:0.106217\tvalidation_1-rmse:0.136054\tvalidation_0-rmspe:0.114438\tvalidation_1-rmspe:0.114501\n",
      "[762]\tvalidation_0-rmse:0.106215\tvalidation_1-rmse:0.136053\tvalidation_0-rmspe:0.114437\tvalidation_1-rmspe:0.1145\n",
      "[763]\tvalidation_0-rmse:0.106213\tvalidation_1-rmse:0.136054\tvalidation_0-rmspe:0.114437\tvalidation_1-rmspe:0.114504\n",
      "[764]\tvalidation_0-rmse:0.106213\tvalidation_1-rmse:0.136054\tvalidation_0-rmspe:0.114436\tvalidation_1-rmspe:0.114503\n",
      "[765]\tvalidation_0-rmse:0.106206\tvalidation_1-rmse:0.136053\tvalidation_0-rmspe:0.114433\tvalidation_1-rmspe:0.114501\n",
      "[766]\tvalidation_0-rmse:0.1062\tvalidation_1-rmse:0.13605\tvalidation_0-rmspe:0.114417\tvalidation_1-rmspe:0.114497\n",
      "[767]\tvalidation_0-rmse:0.106188\tvalidation_1-rmse:0.13604\tvalidation_0-rmspe:0.114401\tvalidation_1-rmspe:0.114482\n",
      "[768]\tvalidation_0-rmse:0.106169\tvalidation_1-rmse:0.136036\tvalidation_0-rmspe:0.11439\tvalidation_1-rmspe:0.114474\n",
      "[769]\tvalidation_0-rmse:0.106168\tvalidation_1-rmse:0.136035\tvalidation_0-rmspe:0.114388\tvalidation_1-rmspe:0.114471\n",
      "[770]\tvalidation_0-rmse:0.106161\tvalidation_1-rmse:0.136032\tvalidation_0-rmspe:0.114382\tvalidation_1-rmspe:0.114473\n",
      "[771]\tvalidation_0-rmse:0.106158\tvalidation_1-rmse:0.13603\tvalidation_0-rmspe:0.114379\tvalidation_1-rmspe:0.114471\n",
      "[772]\tvalidation_0-rmse:0.106152\tvalidation_1-rmse:0.136031\tvalidation_0-rmspe:0.114377\tvalidation_1-rmspe:0.114472\n",
      "[773]\tvalidation_0-rmse:0.106142\tvalidation_1-rmse:0.13602\tvalidation_0-rmspe:0.114358\tvalidation_1-rmspe:0.114459\n",
      "[774]\tvalidation_0-rmse:0.106094\tvalidation_1-rmse:0.136015\tvalidation_0-rmspe:0.114332\tvalidation_1-rmspe:0.114451\n",
      "[775]\tvalidation_0-rmse:0.106083\tvalidation_1-rmse:0.135981\tvalidation_0-rmspe:0.114323\tvalidation_1-rmspe:0.114447\n",
      "[776]\tvalidation_0-rmse:0.106059\tvalidation_1-rmse:0.135981\tvalidation_0-rmspe:0.114322\tvalidation_1-rmspe:0.114447\n",
      "[777]\tvalidation_0-rmse:0.106051\tvalidation_1-rmse:0.135976\tvalidation_0-rmspe:0.114316\tvalidation_1-rmspe:0.114438\n",
      "[778]\tvalidation_0-rmse:0.106046\tvalidation_1-rmse:0.135982\tvalidation_0-rmspe:0.114304\tvalidation_1-rmspe:0.114438\n",
      "[779]\tvalidation_0-rmse:0.106024\tvalidation_1-rmse:0.135982\tvalidation_0-rmspe:0.112574\tvalidation_1-rmspe:0.114439\n",
      "[780]\tvalidation_0-rmse:0.106\tvalidation_1-rmse:0.13598\tvalidation_0-rmspe:0.112571\tvalidation_1-rmspe:0.114435\n",
      "[781]\tvalidation_0-rmse:0.105995\tvalidation_1-rmse:0.135981\tvalidation_0-rmspe:0.112561\tvalidation_1-rmspe:0.114438\n",
      "[782]\tvalidation_0-rmse:0.105994\tvalidation_1-rmse:0.13598\tvalidation_0-rmspe:0.11256\tvalidation_1-rmspe:0.114438\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[783]\tvalidation_0-rmse:0.105988\tvalidation_1-rmse:0.135975\tvalidation_0-rmspe:0.112551\tvalidation_1-rmspe:0.114425\n",
      "[784]\tvalidation_0-rmse:0.105981\tvalidation_1-rmse:0.135977\tvalidation_0-rmspe:0.11255\tvalidation_1-rmspe:0.11443\n",
      "[785]\tvalidation_0-rmse:0.105976\tvalidation_1-rmse:0.135976\tvalidation_0-rmspe:0.112544\tvalidation_1-rmspe:0.114428\n",
      "[786]\tvalidation_0-rmse:0.105973\tvalidation_1-rmse:0.135976\tvalidation_0-rmspe:0.112546\tvalidation_1-rmspe:0.114429\n",
      "[787]\tvalidation_0-rmse:0.105973\tvalidation_1-rmse:0.135976\tvalidation_0-rmspe:0.112544\tvalidation_1-rmspe:0.114428\n",
      "[788]\tvalidation_0-rmse:0.10595\tvalidation_1-rmse:0.135975\tvalidation_0-rmspe:0.112512\tvalidation_1-rmspe:0.114475\n",
      "[789]\tvalidation_0-rmse:0.105932\tvalidation_1-rmse:0.135981\tvalidation_0-rmspe:0.11249\tvalidation_1-rmspe:0.114472\n",
      "[790]\tvalidation_0-rmse:0.105879\tvalidation_1-rmse:0.135976\tvalidation_0-rmspe:0.112486\tvalidation_1-rmspe:0.114467\n",
      "[791]\tvalidation_0-rmse:0.105866\tvalidation_1-rmse:0.135971\tvalidation_0-rmspe:0.112472\tvalidation_1-rmspe:0.114454\n",
      "[792]\tvalidation_0-rmse:0.105866\tvalidation_1-rmse:0.13597\tvalidation_0-rmspe:0.112471\tvalidation_1-rmspe:0.114451\n",
      "[793]\tvalidation_0-rmse:0.105865\tvalidation_1-rmse:0.13597\tvalidation_0-rmspe:0.112471\tvalidation_1-rmspe:0.114452\n",
      "[794]\tvalidation_0-rmse:0.105862\tvalidation_1-rmse:0.135972\tvalidation_0-rmspe:0.112471\tvalidation_1-rmspe:0.114457\n",
      "[795]\tvalidation_0-rmse:0.105829\tvalidation_1-rmse:0.136072\tvalidation_0-rmspe:0.112459\tvalidation_1-rmspe:0.114487\n",
      "[796]\tvalidation_0-rmse:0.105813\tvalidation_1-rmse:0.136074\tvalidation_0-rmspe:0.112413\tvalidation_1-rmspe:0.114483\n",
      "[797]\tvalidation_0-rmse:0.105802\tvalidation_1-rmse:0.13607\tvalidation_0-rmspe:0.112407\tvalidation_1-rmspe:0.114495\n",
      "[798]\tvalidation_0-rmse:0.105775\tvalidation_1-rmse:0.13606\tvalidation_0-rmspe:0.112404\tvalidation_1-rmspe:0.11448\n",
      "[799]\tvalidation_0-rmse:0.10577\tvalidation_1-rmse:0.136062\tvalidation_0-rmspe:0.112398\tvalidation_1-rmspe:0.11448\n",
      "[800]\tvalidation_0-rmse:0.10577\tvalidation_1-rmse:0.136062\tvalidation_0-rmspe:0.112396\tvalidation_1-rmspe:0.114478\n",
      "[801]\tvalidation_0-rmse:0.10577\tvalidation_1-rmse:0.136063\tvalidation_0-rmspe:0.112398\tvalidation_1-rmspe:0.114479\n",
      "[802]\tvalidation_0-rmse:0.105763\tvalidation_1-rmse:0.136059\tvalidation_0-rmspe:0.112384\tvalidation_1-rmspe:0.114475\n",
      "[803]\tvalidation_0-rmse:0.10573\tvalidation_1-rmse:0.136062\tvalidation_0-rmspe:0.112381\tvalidation_1-rmspe:0.114484\n",
      "[804]\tvalidation_0-rmse:0.105712\tvalidation_1-rmse:0.136063\tvalidation_0-rmspe:0.112379\tvalidation_1-rmspe:0.114483\n",
      "[805]\tvalidation_0-rmse:0.105709\tvalidation_1-rmse:0.136062\tvalidation_0-rmspe:0.112374\tvalidation_1-rmspe:0.114484\n",
      "[806]\tvalidation_0-rmse:0.105708\tvalidation_1-rmse:0.136073\tvalidation_0-rmspe:0.112372\tvalidation_1-rmspe:0.114496\n",
      "[807]\tvalidation_0-rmse:0.105683\tvalidation_1-rmse:0.136074\tvalidation_0-rmspe:0.11236\tvalidation_1-rmspe:0.1145\n",
      "[808]\tvalidation_0-rmse:0.105669\tvalidation_1-rmse:0.136071\tvalidation_0-rmspe:0.112342\tvalidation_1-rmspe:0.114493\n",
      "[809]\tvalidation_0-rmse:0.105636\tvalidation_1-rmse:0.136092\tvalidation_0-rmspe:0.112336\tvalidation_1-rmspe:0.114508\n",
      "[810]\tvalidation_0-rmse:0.10562\tvalidation_1-rmse:0.13609\tvalidation_0-rmspe:0.112329\tvalidation_1-rmspe:0.114506\n",
      "[811]\tvalidation_0-rmse:0.105607\tvalidation_1-rmse:0.136085\tvalidation_0-rmspe:0.112318\tvalidation_1-rmspe:0.114499\n",
      "[812]\tvalidation_0-rmse:0.105586\tvalidation_1-rmse:0.136075\tvalidation_0-rmspe:0.112304\tvalidation_1-rmspe:0.114484\n",
      "[813]\tvalidation_0-rmse:0.10555\tvalidation_1-rmse:0.136064\tvalidation_0-rmspe:0.112171\tvalidation_1-rmspe:0.11448\n",
      "[814]\tvalidation_0-rmse:0.105546\tvalidation_1-rmse:0.136068\tvalidation_0-rmspe:0.111909\tvalidation_1-rmspe:0.114488\n",
      "[815]\tvalidation_0-rmse:0.105515\tvalidation_1-rmse:0.136061\tvalidation_0-rmspe:0.111858\tvalidation_1-rmspe:0.114472\n",
      "[816]\tvalidation_0-rmse:0.105514\tvalidation_1-rmse:0.13606\tvalidation_0-rmspe:0.111857\tvalidation_1-rmspe:0.11447\n",
      "[817]\tvalidation_0-rmse:0.10551\tvalidation_1-rmse:0.136059\tvalidation_0-rmspe:0.111857\tvalidation_1-rmspe:0.114468\n",
      "[818]\tvalidation_0-rmse:0.105499\tvalidation_1-rmse:0.13606\tvalidation_0-rmspe:0.111848\tvalidation_1-rmspe:0.11447\n",
      "[819]\tvalidation_0-rmse:0.105498\tvalidation_1-rmse:0.13606\tvalidation_0-rmspe:0.111844\tvalidation_1-rmspe:0.11447\n",
      "[820]\tvalidation_0-rmse:0.105479\tvalidation_1-rmse:0.136058\tvalidation_0-rmspe:0.111844\tvalidation_1-rmspe:0.11447\n",
      "[821]\tvalidation_0-rmse:0.105477\tvalidation_1-rmse:0.136056\tvalidation_0-rmspe:0.111843\tvalidation_1-rmspe:0.114469\n",
      "[822]\tvalidation_0-rmse:0.105472\tvalidation_1-rmse:0.136054\tvalidation_0-rmspe:0.11184\tvalidation_1-rmspe:0.114468\n",
      "[823]\tvalidation_0-rmse:0.105467\tvalidation_1-rmse:0.13605\tvalidation_0-rmspe:0.111835\tvalidation_1-rmspe:0.114464\n",
      "[824]\tvalidation_0-rmse:0.105466\tvalidation_1-rmse:0.136048\tvalidation_0-rmspe:0.111833\tvalidation_1-rmspe:0.114461\n",
      "[825]\tvalidation_0-rmse:0.105463\tvalidation_1-rmse:0.136045\tvalidation_0-rmspe:0.111831\tvalidation_1-rmspe:0.114442\n",
      "[826]\tvalidation_0-rmse:0.105459\tvalidation_1-rmse:0.136045\tvalidation_0-rmspe:0.111829\tvalidation_1-rmspe:0.114439\n",
      "[827]\tvalidation_0-rmse:0.105458\tvalidation_1-rmse:0.136044\tvalidation_0-rmspe:0.111829\tvalidation_1-rmspe:0.114439\n",
      "[828]\tvalidation_0-rmse:0.105457\tvalidation_1-rmse:0.136045\tvalidation_0-rmspe:0.111828\tvalidation_1-rmspe:0.114441\n",
      "[829]\tvalidation_0-rmse:0.105446\tvalidation_1-rmse:0.136038\tvalidation_0-rmspe:0.111812\tvalidation_1-rmspe:0.114435\n",
      "[830]\tvalidation_0-rmse:0.105411\tvalidation_1-rmse:0.136035\tvalidation_0-rmspe:0.111814\tvalidation_1-rmspe:0.114434\n",
      "[831]\tvalidation_0-rmse:0.105408\tvalidation_1-rmse:0.13603\tvalidation_0-rmspe:0.111812\tvalidation_1-rmspe:0.114428\n",
      "[832]\tvalidation_0-rmse:0.1054\tvalidation_1-rmse:0.136021\tvalidation_0-rmspe:0.111794\tvalidation_1-rmspe:0.114409\n",
      "[833]\tvalidation_0-rmse:0.105388\tvalidation_1-rmse:0.13601\tvalidation_0-rmspe:0.111781\tvalidation_1-rmspe:0.114397\n",
      "[834]\tvalidation_0-rmse:0.105386\tvalidation_1-rmse:0.136009\tvalidation_0-rmspe:0.111777\tvalidation_1-rmspe:0.114397\n",
      "[835]\tvalidation_0-rmse:0.105378\tvalidation_1-rmse:0.136003\tvalidation_0-rmspe:0.111772\tvalidation_1-rmspe:0.114386\n",
      "[836]\tvalidation_0-rmse:0.105371\tvalidation_1-rmse:0.135999\tvalidation_0-rmspe:0.11176\tvalidation_1-rmspe:0.114373\n",
      "[837]\tvalidation_0-rmse:0.105369\tvalidation_1-rmse:0.135995\tvalidation_0-rmspe:0.111759\tvalidation_1-rmspe:0.114369\n",
      "[838]\tvalidation_0-rmse:0.105345\tvalidation_1-rmse:0.135979\tvalidation_0-rmspe:0.111748\tvalidation_1-rmspe:0.11435\n",
      "[839]\tvalidation_0-rmse:0.105345\tvalidation_1-rmse:0.135979\tvalidation_0-rmspe:0.111748\tvalidation_1-rmspe:0.114351\n",
      "[840]\tvalidation_0-rmse:0.105313\tvalidation_1-rmse:0.135977\tvalidation_0-rmspe:0.111705\tvalidation_1-rmspe:0.114349\n",
      "[841]\tvalidation_0-rmse:0.105307\tvalidation_1-rmse:0.135974\tvalidation_0-rmspe:0.111704\tvalidation_1-rmspe:0.114347\n",
      "[842]\tvalidation_0-rmse:0.105304\tvalidation_1-rmse:0.13598\tvalidation_0-rmspe:0.111696\tvalidation_1-rmspe:0.114406\n",
      "[843]\tvalidation_0-rmse:0.105299\tvalidation_1-rmse:0.135987\tvalidation_0-rmspe:0.111695\tvalidation_1-rmspe:0.114417\n",
      "[844]\tvalidation_0-rmse:0.105299\tvalidation_1-rmse:0.135987\tvalidation_0-rmspe:0.111694\tvalidation_1-rmspe:0.114417\n",
      "[845]\tvalidation_0-rmse:0.105285\tvalidation_1-rmse:0.135987\tvalidation_0-rmspe:0.111658\tvalidation_1-rmspe:0.114425\n",
      "[846]\tvalidation_0-rmse:0.105282\tvalidation_1-rmse:0.135988\tvalidation_0-rmspe:0.111656\tvalidation_1-rmspe:0.114425\n",
      "[847]\tvalidation_0-rmse:0.105281\tvalidation_1-rmse:0.135988\tvalidation_0-rmspe:0.111653\tvalidation_1-rmspe:0.114424\n",
      "[848]\tvalidation_0-rmse:0.105281\tvalidation_1-rmse:0.135988\tvalidation_0-rmspe:0.111653\tvalidation_1-rmspe:0.114424\n",
      "[849]\tvalidation_0-rmse:0.10525\tvalidation_1-rmse:0.135987\tvalidation_0-rmspe:0.111649\tvalidation_1-rmspe:0.114421\n",
      "[850]\tvalidation_0-rmse:0.105248\tvalidation_1-rmse:0.135982\tvalidation_0-rmspe:0.111642\tvalidation_1-rmspe:0.114413\n",
      "[851]\tvalidation_0-rmse:0.105245\tvalidation_1-rmse:0.135981\tvalidation_0-rmspe:0.111639\tvalidation_1-rmspe:0.114411\n",
      "[852]\tvalidation_0-rmse:0.105226\tvalidation_1-rmse:0.135988\tvalidation_0-rmspe:0.111626\tvalidation_1-rmspe:0.11445\n",
      "[853]\tvalidation_0-rmse:0.105213\tvalidation_1-rmse:0.135985\tvalidation_0-rmspe:0.111619\tvalidation_1-rmspe:0.114446\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[854]\tvalidation_0-rmse:0.10521\tvalidation_1-rmse:0.135984\tvalidation_0-rmspe:0.111609\tvalidation_1-rmspe:0.114441\n",
      "[855]\tvalidation_0-rmse:0.105203\tvalidation_1-rmse:0.135983\tvalidation_0-rmspe:0.111587\tvalidation_1-rmspe:0.114438\n",
      "[856]\tvalidation_0-rmse:0.1052\tvalidation_1-rmse:0.135983\tvalidation_0-rmspe:0.111581\tvalidation_1-rmspe:0.114435\n",
      "[857]\tvalidation_0-rmse:0.105191\tvalidation_1-rmse:0.135972\tvalidation_0-rmspe:0.111571\tvalidation_1-rmspe:0.114422\n",
      "[858]\tvalidation_0-rmse:0.105191\tvalidation_1-rmse:0.135971\tvalidation_0-rmspe:0.11157\tvalidation_1-rmspe:0.11442\n",
      "[859]\tvalidation_0-rmse:0.105186\tvalidation_1-rmse:0.135972\tvalidation_0-rmspe:0.11156\tvalidation_1-rmspe:0.114422\n",
      "[860]\tvalidation_0-rmse:0.105184\tvalidation_1-rmse:0.135971\tvalidation_0-rmspe:0.111561\tvalidation_1-rmspe:0.11442\n",
      "[861]\tvalidation_0-rmse:0.105184\tvalidation_1-rmse:0.135973\tvalidation_0-rmspe:0.111561\tvalidation_1-rmspe:0.114425\n",
      "[862]\tvalidation_0-rmse:0.105178\tvalidation_1-rmse:0.135974\tvalidation_0-rmspe:0.111557\tvalidation_1-rmspe:0.114424\n",
      "[863]\tvalidation_0-rmse:0.105175\tvalidation_1-rmse:0.135973\tvalidation_0-rmspe:0.111555\tvalidation_1-rmspe:0.114421\n",
      "[864]\tvalidation_0-rmse:0.105161\tvalidation_1-rmse:0.135975\tvalidation_0-rmspe:0.111527\tvalidation_1-rmspe:0.114422\n",
      "[865]\tvalidation_0-rmse:0.105134\tvalidation_1-rmse:0.135972\tvalidation_0-rmspe:0.111339\tvalidation_1-rmspe:0.114419\n",
      "[866]\tvalidation_0-rmse:0.105125\tvalidation_1-rmse:0.135967\tvalidation_0-rmspe:0.11133\tvalidation_1-rmspe:0.114413\n",
      "[867]\tvalidation_0-rmse:0.105113\tvalidation_1-rmse:0.135963\tvalidation_0-rmspe:0.11132\tvalidation_1-rmspe:0.114411\n",
      "[868]\tvalidation_0-rmse:0.105089\tvalidation_1-rmse:0.135964\tvalidation_0-rmspe:0.111319\tvalidation_1-rmspe:0.114411\n",
      "[869]\tvalidation_0-rmse:0.105088\tvalidation_1-rmse:0.135963\tvalidation_0-rmspe:0.11132\tvalidation_1-rmspe:0.114409\n",
      "[870]\tvalidation_0-rmse:0.105063\tvalidation_1-rmse:0.135961\tvalidation_0-rmspe:0.111318\tvalidation_1-rmspe:0.114406\n",
      "[871]\tvalidation_0-rmse:0.105062\tvalidation_1-rmse:0.135961\tvalidation_0-rmspe:0.111319\tvalidation_1-rmspe:0.114409\n",
      "[872]\tvalidation_0-rmse:0.10505\tvalidation_1-rmse:0.135956\tvalidation_0-rmspe:0.111298\tvalidation_1-rmspe:0.114402\n",
      "[873]\tvalidation_0-rmse:0.104999\tvalidation_1-rmse:0.135955\tvalidation_0-rmspe:0.111246\tvalidation_1-rmspe:0.114379\n",
      "[874]\tvalidation_0-rmse:0.104995\tvalidation_1-rmse:0.135951\tvalidation_0-rmspe:0.111243\tvalidation_1-rmspe:0.114372\n",
      "[875]\tvalidation_0-rmse:0.104973\tvalidation_1-rmse:0.135987\tvalidation_0-rmspe:0.111208\tvalidation_1-rmspe:0.114373\n",
      "[876]\tvalidation_0-rmse:0.10497\tvalidation_1-rmse:0.135988\tvalidation_0-rmspe:0.111204\tvalidation_1-rmspe:0.114375\n",
      "[877]\tvalidation_0-rmse:0.104965\tvalidation_1-rmse:0.135987\tvalidation_0-rmspe:0.111201\tvalidation_1-rmspe:0.114375\n",
      "[878]\tvalidation_0-rmse:0.104961\tvalidation_1-rmse:0.13599\tvalidation_0-rmspe:0.111199\tvalidation_1-rmspe:0.114378\n",
      "[879]\tvalidation_0-rmse:0.10496\tvalidation_1-rmse:0.135989\tvalidation_0-rmspe:0.111197\tvalidation_1-rmspe:0.114375\n",
      "[880]\tvalidation_0-rmse:0.10494\tvalidation_1-rmse:0.135963\tvalidation_0-rmspe:0.111178\tvalidation_1-rmspe:0.114365\n",
      "[881]\tvalidation_0-rmse:0.104918\tvalidation_1-rmse:0.135962\tvalidation_0-rmspe:0.111173\tvalidation_1-rmspe:0.114361\n",
      "[882]\tvalidation_0-rmse:0.104916\tvalidation_1-rmse:0.135961\tvalidation_0-rmspe:0.111171\tvalidation_1-rmspe:0.114358\n",
      "[883]\tvalidation_0-rmse:0.104914\tvalidation_1-rmse:0.135958\tvalidation_0-rmspe:0.11117\tvalidation_1-rmspe:0.114356\n",
      "[884]\tvalidation_0-rmse:0.104887\tvalidation_1-rmse:0.135953\tvalidation_0-rmspe:0.111159\tvalidation_1-rmspe:0.114348\n",
      "[885]\tvalidation_0-rmse:0.104878\tvalidation_1-rmse:0.135944\tvalidation_0-rmspe:0.111145\tvalidation_1-rmspe:0.114339\n",
      "[886]\tvalidation_0-rmse:0.104876\tvalidation_1-rmse:0.135943\tvalidation_0-rmspe:0.111134\tvalidation_1-rmspe:0.114339\n",
      "[887]\tvalidation_0-rmse:0.104871\tvalidation_1-rmse:0.135944\tvalidation_0-rmspe:0.111124\tvalidation_1-rmspe:0.114339\n",
      "[888]\tvalidation_0-rmse:0.104858\tvalidation_1-rmse:0.135941\tvalidation_0-rmspe:0.111113\tvalidation_1-rmspe:0.114338\n",
      "[889]\tvalidation_0-rmse:0.104856\tvalidation_1-rmse:0.135936\tvalidation_0-rmspe:0.111119\tvalidation_1-rmspe:0.114336\n",
      "[890]\tvalidation_0-rmse:0.104846\tvalidation_1-rmse:0.135933\tvalidation_0-rmspe:0.111117\tvalidation_1-rmspe:0.114331\n",
      "[891]\tvalidation_0-rmse:0.104825\tvalidation_1-rmse:0.135939\tvalidation_0-rmspe:0.111111\tvalidation_1-rmspe:0.114333\n",
      "[892]\tvalidation_0-rmse:0.104826\tvalidation_1-rmse:0.135938\tvalidation_0-rmspe:0.11111\tvalidation_1-rmspe:0.114333\n",
      "[893]\tvalidation_0-rmse:0.104816\tvalidation_1-rmse:0.135939\tvalidation_0-rmspe:0.111106\tvalidation_1-rmspe:0.114337\n",
      "[894]\tvalidation_0-rmse:0.104812\tvalidation_1-rmse:0.135939\tvalidation_0-rmspe:0.111103\tvalidation_1-rmspe:0.114337\n",
      "[895]\tvalidation_0-rmse:0.104805\tvalidation_1-rmse:0.13594\tvalidation_0-rmspe:0.111102\tvalidation_1-rmspe:0.114337\n",
      "[896]\tvalidation_0-rmse:0.104802\tvalidation_1-rmse:0.13594\tvalidation_0-rmspe:0.111099\tvalidation_1-rmspe:0.114337\n",
      "[897]\tvalidation_0-rmse:0.104782\tvalidation_1-rmse:0.135932\tvalidation_0-rmspe:0.111087\tvalidation_1-rmspe:0.114329\n",
      "[898]\tvalidation_0-rmse:0.104766\tvalidation_1-rmse:0.135929\tvalidation_0-rmspe:0.111086\tvalidation_1-rmspe:0.114326\n",
      "[899]\tvalidation_0-rmse:0.104766\tvalidation_1-rmse:0.135929\tvalidation_0-rmspe:0.111087\tvalidation_1-rmspe:0.114327\n",
      "[900]\tvalidation_0-rmse:0.104766\tvalidation_1-rmse:0.135929\tvalidation_0-rmspe:0.111086\tvalidation_1-rmspe:0.114326\n",
      "[901]\tvalidation_0-rmse:0.104762\tvalidation_1-rmse:0.135927\tvalidation_0-rmspe:0.111081\tvalidation_1-rmspe:0.114323\n",
      "[902]\tvalidation_0-rmse:0.104754\tvalidation_1-rmse:0.135919\tvalidation_0-rmspe:0.111072\tvalidation_1-rmspe:0.114316\n",
      "[903]\tvalidation_0-rmse:0.104739\tvalidation_1-rmse:0.135921\tvalidation_0-rmspe:0.111067\tvalidation_1-rmspe:0.114316\n",
      "[904]\tvalidation_0-rmse:0.104738\tvalidation_1-rmse:0.135921\tvalidation_0-rmspe:0.111065\tvalidation_1-rmspe:0.114314\n",
      "[905]\tvalidation_0-rmse:0.104728\tvalidation_1-rmse:0.135916\tvalidation_0-rmspe:0.111058\tvalidation_1-rmspe:0.114312\n",
      "[906]\tvalidation_0-rmse:0.104726\tvalidation_1-rmse:0.135915\tvalidation_0-rmspe:0.111056\tvalidation_1-rmspe:0.114311\n",
      "[907]\tvalidation_0-rmse:0.10472\tvalidation_1-rmse:0.135911\tvalidation_0-rmspe:0.111051\tvalidation_1-rmspe:0.11431\n",
      "[908]\tvalidation_0-rmse:0.104712\tvalidation_1-rmse:0.135912\tvalidation_0-rmspe:0.111052\tvalidation_1-rmspe:0.114312\n",
      "[909]\tvalidation_0-rmse:0.10471\tvalidation_1-rmse:0.135909\tvalidation_0-rmspe:0.11105\tvalidation_1-rmspe:0.114308\n",
      "[910]\tvalidation_0-rmse:0.104709\tvalidation_1-rmse:0.135908\tvalidation_0-rmspe:0.111049\tvalidation_1-rmspe:0.114307\n",
      "[911]\tvalidation_0-rmse:0.104708\tvalidation_1-rmse:0.135908\tvalidation_0-rmspe:0.111046\tvalidation_1-rmspe:0.114307\n",
      "[912]\tvalidation_0-rmse:0.104679\tvalidation_1-rmse:0.135908\tvalidation_0-rmspe:0.111027\tvalidation_1-rmspe:0.114308\n",
      "[913]\tvalidation_0-rmse:0.104671\tvalidation_1-rmse:0.135906\tvalidation_0-rmspe:0.111022\tvalidation_1-rmspe:0.114308\n",
      "[914]\tvalidation_0-rmse:0.104661\tvalidation_1-rmse:0.135901\tvalidation_0-rmspe:0.11101\tvalidation_1-rmspe:0.114299\n",
      "[915]\tvalidation_0-rmse:0.104659\tvalidation_1-rmse:0.1359\tvalidation_0-rmspe:0.111009\tvalidation_1-rmspe:0.114297\n",
      "[916]\tvalidation_0-rmse:0.104658\tvalidation_1-rmse:0.1359\tvalidation_0-rmspe:0.111009\tvalidation_1-rmspe:0.114297\n",
      "[917]\tvalidation_0-rmse:0.104647\tvalidation_1-rmse:0.135895\tvalidation_0-rmspe:0.111003\tvalidation_1-rmspe:0.114291\n",
      "[918]\tvalidation_0-rmse:0.104644\tvalidation_1-rmse:0.13592\tvalidation_0-rmspe:0.110996\tvalidation_1-rmspe:0.114297\n",
      "[919]\tvalidation_0-rmse:0.104638\tvalidation_1-rmse:0.135926\tvalidation_0-rmspe:0.110988\tvalidation_1-rmspe:0.114304\n",
      "[920]\tvalidation_0-rmse:0.104638\tvalidation_1-rmse:0.135926\tvalidation_0-rmspe:0.110988\tvalidation_1-rmspe:0.114304\n",
      "[921]\tvalidation_0-rmse:0.104636\tvalidation_1-rmse:0.135928\tvalidation_0-rmspe:0.110989\tvalidation_1-rmspe:0.114308\n",
      "[922]\tvalidation_0-rmse:0.104627\tvalidation_1-rmse:0.135918\tvalidation_0-rmspe:0.11098\tvalidation_1-rmspe:0.114298\n",
      "[923]\tvalidation_0-rmse:0.104618\tvalidation_1-rmse:0.135917\tvalidation_0-rmspe:0.11097\tvalidation_1-rmspe:0.114294\n",
      "[924]\tvalidation_0-rmse:0.104617\tvalidation_1-rmse:0.135916\tvalidation_0-rmspe:0.110969\tvalidation_1-rmspe:0.114293\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[925]\tvalidation_0-rmse:0.104611\tvalidation_1-rmse:0.135914\tvalidation_0-rmspe:0.110964\tvalidation_1-rmspe:0.114293\n",
      "[926]\tvalidation_0-rmse:0.104598\tvalidation_1-rmse:0.135918\tvalidation_0-rmspe:0.110948\tvalidation_1-rmspe:0.114293\n",
      "[927]\tvalidation_0-rmse:0.104588\tvalidation_1-rmse:0.135914\tvalidation_0-rmspe:0.110941\tvalidation_1-rmspe:0.114289\n",
      "[928]\tvalidation_0-rmse:0.104585\tvalidation_1-rmse:0.135914\tvalidation_0-rmspe:0.11094\tvalidation_1-rmspe:0.11429\n",
      "[929]\tvalidation_0-rmse:0.104564\tvalidation_1-rmse:0.135904\tvalidation_0-rmspe:0.110921\tvalidation_1-rmspe:0.114281\n",
      "[930]\tvalidation_0-rmse:0.104561\tvalidation_1-rmse:0.135907\tvalidation_0-rmspe:0.11092\tvalidation_1-rmspe:0.114282\n",
      "[931]\tvalidation_0-rmse:0.104561\tvalidation_1-rmse:0.135907\tvalidation_0-rmspe:0.110921\tvalidation_1-rmspe:0.114282\n",
      "[932]\tvalidation_0-rmse:0.104551\tvalidation_1-rmse:0.135905\tvalidation_0-rmspe:0.110912\tvalidation_1-rmspe:0.114286\n",
      "[933]\tvalidation_0-rmse:0.104546\tvalidation_1-rmse:0.135899\tvalidation_0-rmspe:0.110906\tvalidation_1-rmspe:0.11428\n",
      "[934]\tvalidation_0-rmse:0.104539\tvalidation_1-rmse:0.135898\tvalidation_0-rmspe:0.110906\tvalidation_1-rmspe:0.114281\n",
      "[935]\tvalidation_0-rmse:0.104539\tvalidation_1-rmse:0.135898\tvalidation_0-rmspe:0.110906\tvalidation_1-rmspe:0.114281\n",
      "[936]\tvalidation_0-rmse:0.104537\tvalidation_1-rmse:0.135889\tvalidation_0-rmspe:0.110903\tvalidation_1-rmspe:0.114275\n",
      "[937]\tvalidation_0-rmse:0.104535\tvalidation_1-rmse:0.135887\tvalidation_0-rmspe:0.110898\tvalidation_1-rmspe:0.11427\n",
      "[938]\tvalidation_0-rmse:0.104533\tvalidation_1-rmse:0.135888\tvalidation_0-rmspe:0.110897\tvalidation_1-rmspe:0.114271\n",
      "[939]\tvalidation_0-rmse:0.104532\tvalidation_1-rmse:0.135894\tvalidation_0-rmspe:0.110863\tvalidation_1-rmspe:0.114275\n",
      "[940]\tvalidation_0-rmse:0.104529\tvalidation_1-rmse:0.135893\tvalidation_0-rmspe:0.110868\tvalidation_1-rmspe:0.114278\n",
      "[941]\tvalidation_0-rmse:0.104515\tvalidation_1-rmse:0.13589\tvalidation_0-rmspe:0.110861\tvalidation_1-rmspe:0.114274\n",
      "[942]\tvalidation_0-rmse:0.104512\tvalidation_1-rmse:0.13589\tvalidation_0-rmspe:0.110862\tvalidation_1-rmspe:0.114273\n",
      "[943]\tvalidation_0-rmse:0.104507\tvalidation_1-rmse:0.13589\tvalidation_0-rmspe:0.110859\tvalidation_1-rmspe:0.114276\n",
      "[944]\tvalidation_0-rmse:0.104485\tvalidation_1-rmse:0.1359\tvalidation_0-rmspe:0.110833\tvalidation_1-rmspe:0.114281\n",
      "[945]\tvalidation_0-rmse:0.104484\tvalidation_1-rmse:0.135903\tvalidation_0-rmspe:0.110834\tvalidation_1-rmspe:0.114284\n",
      "[946]\tvalidation_0-rmse:0.104467\tvalidation_1-rmse:0.135885\tvalidation_0-rmspe:0.110829\tvalidation_1-rmspe:0.114289\n",
      "[947]\tvalidation_0-rmse:0.104458\tvalidation_1-rmse:0.135885\tvalidation_0-rmspe:0.110827\tvalidation_1-rmspe:0.114295\n",
      "[948]\tvalidation_0-rmse:0.104401\tvalidation_1-rmse:0.13588\tvalidation_0-rmspe:0.110801\tvalidation_1-rmspe:0.114292\n",
      "[949]\tvalidation_0-rmse:0.104385\tvalidation_1-rmse:0.135878\tvalidation_0-rmspe:0.110801\tvalidation_1-rmspe:0.114293\n",
      "[950]\tvalidation_0-rmse:0.104384\tvalidation_1-rmse:0.135876\tvalidation_0-rmspe:0.110803\tvalidation_1-rmspe:0.114291\n",
      "[951]\tvalidation_0-rmse:0.10438\tvalidation_1-rmse:0.135873\tvalidation_0-rmspe:0.1108\tvalidation_1-rmspe:0.114288\n",
      "[952]\tvalidation_0-rmse:0.104376\tvalidation_1-rmse:0.135871\tvalidation_0-rmspe:0.110794\tvalidation_1-rmspe:0.114278\n",
      "[953]\tvalidation_0-rmse:0.104376\tvalidation_1-rmse:0.13587\tvalidation_0-rmspe:0.110792\tvalidation_1-rmspe:0.114277\n",
      "[954]\tvalidation_0-rmse:0.10437\tvalidation_1-rmse:0.135868\tvalidation_0-rmspe:0.110788\tvalidation_1-rmspe:0.114277\n",
      "[955]\tvalidation_0-rmse:0.104362\tvalidation_1-rmse:0.135868\tvalidation_0-rmspe:0.110785\tvalidation_1-rmspe:0.114276\n",
      "[956]\tvalidation_0-rmse:0.104355\tvalidation_1-rmse:0.135881\tvalidation_0-rmspe:0.110772\tvalidation_1-rmspe:0.114276\n",
      "[957]\tvalidation_0-rmse:0.104333\tvalidation_1-rmse:0.135878\tvalidation_0-rmspe:0.110764\tvalidation_1-rmspe:0.11427\n",
      "[958]\tvalidation_0-rmse:0.104329\tvalidation_1-rmse:0.13588\tvalidation_0-rmspe:0.110753\tvalidation_1-rmspe:0.114272\n",
      "[959]\tvalidation_0-rmse:0.104325\tvalidation_1-rmse:0.135879\tvalidation_0-rmspe:0.110757\tvalidation_1-rmspe:0.114269\n",
      "[960]\tvalidation_0-rmse:0.10428\tvalidation_1-rmse:0.13588\tvalidation_0-rmspe:0.110737\tvalidation_1-rmspe:0.114272\n",
      "[961]\tvalidation_0-rmse:0.104273\tvalidation_1-rmse:0.135879\tvalidation_0-rmspe:0.110736\tvalidation_1-rmspe:0.11427\n",
      "[962]\tvalidation_0-rmse:0.104265\tvalidation_1-rmse:0.135881\tvalidation_0-rmspe:0.110736\tvalidation_1-rmspe:0.114273\n",
      "[963]\tvalidation_0-rmse:0.104265\tvalidation_1-rmse:0.135881\tvalidation_0-rmspe:0.110735\tvalidation_1-rmspe:0.114273\n",
      "[964]\tvalidation_0-rmse:0.104262\tvalidation_1-rmse:0.135881\tvalidation_0-rmspe:0.110733\tvalidation_1-rmspe:0.114271\n",
      "[965]\tvalidation_0-rmse:0.104254\tvalidation_1-rmse:0.135877\tvalidation_0-rmspe:0.110722\tvalidation_1-rmspe:0.114249\n",
      "[966]\tvalidation_0-rmse:0.104248\tvalidation_1-rmse:0.135877\tvalidation_0-rmspe:0.110707\tvalidation_1-rmspe:0.114248\n",
      "[967]\tvalidation_0-rmse:0.104235\tvalidation_1-rmse:0.135874\tvalidation_0-rmspe:0.110707\tvalidation_1-rmspe:0.114249\n",
      "[968]\tvalidation_0-rmse:0.104235\tvalidation_1-rmse:0.135874\tvalidation_0-rmspe:0.110706\tvalidation_1-rmspe:0.114248\n",
      "[969]\tvalidation_0-rmse:0.104235\tvalidation_1-rmse:0.135874\tvalidation_0-rmspe:0.110707\tvalidation_1-rmspe:0.114248\n",
      "[970]\tvalidation_0-rmse:0.104225\tvalidation_1-rmse:0.135865\tvalidation_0-rmspe:0.110697\tvalidation_1-rmspe:0.11424\n",
      "[971]\tvalidation_0-rmse:0.104218\tvalidation_1-rmse:0.135863\tvalidation_0-rmspe:0.110694\tvalidation_1-rmspe:0.114235\n",
      "[972]\tvalidation_0-rmse:0.104212\tvalidation_1-rmse:0.135871\tvalidation_0-rmspe:0.11069\tvalidation_1-rmspe:0.114241\n",
      "[973]\tvalidation_0-rmse:0.10421\tvalidation_1-rmse:0.135871\tvalidation_0-rmspe:0.11069\tvalidation_1-rmspe:0.114243\n",
      "[974]\tvalidation_0-rmse:0.104195\tvalidation_1-rmse:0.135875\tvalidation_0-rmspe:0.110681\tvalidation_1-rmspe:0.114255\n",
      "[975]\tvalidation_0-rmse:0.104187\tvalidation_1-rmse:0.135873\tvalidation_0-rmspe:0.110673\tvalidation_1-rmspe:0.114248\n",
      "[976]\tvalidation_0-rmse:0.104166\tvalidation_1-rmse:0.135875\tvalidation_0-rmspe:0.110668\tvalidation_1-rmspe:0.114246\n",
      "[977]\tvalidation_0-rmse:0.104165\tvalidation_1-rmse:0.135875\tvalidation_0-rmspe:0.110658\tvalidation_1-rmspe:0.114247\n",
      "[978]\tvalidation_0-rmse:0.104143\tvalidation_1-rmse:0.135879\tvalidation_0-rmspe:0.110636\tvalidation_1-rmspe:0.114244\n",
      "[979]\tvalidation_0-rmse:0.104132\tvalidation_1-rmse:0.13588\tvalidation_0-rmspe:0.110634\tvalidation_1-rmspe:0.114255\n",
      "[980]\tvalidation_0-rmse:0.104124\tvalidation_1-rmse:0.13588\tvalidation_0-rmspe:0.110624\tvalidation_1-rmspe:0.114263\n",
      "[981]\tvalidation_0-rmse:0.104123\tvalidation_1-rmse:0.135878\tvalidation_0-rmspe:0.110622\tvalidation_1-rmspe:0.114259\n",
      "[982]\tvalidation_0-rmse:0.104123\tvalidation_1-rmse:0.135878\tvalidation_0-rmspe:0.110621\tvalidation_1-rmspe:0.114258\n",
      "[983]\tvalidation_0-rmse:0.104122\tvalidation_1-rmse:0.135878\tvalidation_0-rmspe:0.11062\tvalidation_1-rmspe:0.114257\n",
      "[984]\tvalidation_0-rmse:0.104094\tvalidation_1-rmse:0.135877\tvalidation_0-rmspe:0.110619\tvalidation_1-rmspe:0.114257\n",
      "[985]\tvalidation_0-rmse:0.104088\tvalidation_1-rmse:0.135864\tvalidation_0-rmspe:0.110595\tvalidation_1-rmspe:0.114249\n",
      "[986]\tvalidation_0-rmse:0.104088\tvalidation_1-rmse:0.135864\tvalidation_0-rmspe:0.110595\tvalidation_1-rmspe:0.114249\n",
      "[987]\tvalidation_0-rmse:0.104074\tvalidation_1-rmse:0.135853\tvalidation_0-rmspe:0.110587\tvalidation_1-rmspe:0.114234\n",
      "[988]\tvalidation_0-rmse:0.104008\tvalidation_1-rmse:0.135854\tvalidation_0-rmspe:0.110569\tvalidation_1-rmspe:0.114239\n",
      "[989]\tvalidation_0-rmse:0.104001\tvalidation_1-rmse:0.135852\tvalidation_0-rmspe:0.110565\tvalidation_1-rmspe:0.114236\n",
      "[990]\tvalidation_0-rmse:0.103997\tvalidation_1-rmse:0.135852\tvalidation_0-rmspe:0.110566\tvalidation_1-rmspe:0.114236\n",
      "[991]\tvalidation_0-rmse:0.103983\tvalidation_1-rmse:0.135852\tvalidation_0-rmspe:0.110553\tvalidation_1-rmspe:0.114232\n",
      "[992]\tvalidation_0-rmse:0.103982\tvalidation_1-rmse:0.135851\tvalidation_0-rmspe:0.110567\tvalidation_1-rmspe:0.114246\n",
      "[993]\tvalidation_0-rmse:0.103974\tvalidation_1-rmse:0.135859\tvalidation_0-rmspe:0.110354\tvalidation_1-rmspe:0.114242\n",
      "[994]\tvalidation_0-rmse:0.103972\tvalidation_1-rmse:0.13586\tvalidation_0-rmspe:0.11035\tvalidation_1-rmspe:0.114244\n",
      "[995]\tvalidation_0-rmse:0.103971\tvalidation_1-rmse:0.135859\tvalidation_0-rmspe:0.110345\tvalidation_1-rmspe:0.11424\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[996]\tvalidation_0-rmse:0.103937\tvalidation_1-rmse:0.135867\tvalidation_0-rmspe:0.110329\tvalidation_1-rmspe:0.114246\n",
      "[997]\tvalidation_0-rmse:0.103937\tvalidation_1-rmse:0.135867\tvalidation_0-rmspe:0.11033\tvalidation_1-rmspe:0.114247\n",
      "[998]\tvalidation_0-rmse:0.103932\tvalidation_1-rmse:0.135864\tvalidation_0-rmspe:0.110325\tvalidation_1-rmspe:0.114243\n",
      "[999]\tvalidation_0-rmse:0.103932\tvalidation_1-rmse:0.135864\tvalidation_0-rmspe:0.110325\tvalidation_1-rmspe:0.114243\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
       "       colsample_bytree=0.7, gamma=0.4, importance_type='gain',\n",
       "       learning_rate=0.1, max_delta_step=0, max_depth=12,\n",
       "       min_child_weight=1, missing=None, n_estimators=1000, n_jobs=4,\n",
       "       nthread=4, objective='reg:linear', random_state=0, reg_alpha=0,\n",
       "       reg_lambda=1, scale_pos_weight=1, seed=None, silent=True,\n",
       "       subsample=0.8)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "estimator = xgb.XGBRegressor(max_depth=12,learning_rate =0.1,n_jobs =4, gamma = 0.4,n_estimators=num_trees,subsample=0.8,colsample_bytree=0.7,nthread=4,scale_pos_weight=1)\n",
    "estimator.fit(X_train, Y_train,eval_metric=rmspe_xg, eval_set=eval_set, verbose=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#从最终的训练importnace中看果然是时间序列影响比较大\n",
    "ret = estimator.evals_result()\n",
    "train_line = ret['validation_0']['rmspe'][0:1000:10]\n",
    "eval_line  = ret['validation_1']['rmspe'][0:1000:10]\n",
    "# evaldata = ret['eval']['rmspe'][0:num_trees:10]\n",
    "# traindata = ret['train']['rmspe'][0:num_trees:10]\n",
    "plt.plot(range(0,1000,10),eval_line,color='red',label=\"eval\")\n",
    "plt.plot(range(0,1000,10),train_line,color='blue',label=\"train\")\n",
    "plt.legend(loc='best')\n",
    "y_tick = np.arange(0,1,0.1)\n",
    "plt.yticks(y_tick)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3185: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  if (yield from self.run_code(code, result)):\n",
      "D:\\AnaconDA\\lib\\site-packages\\pandas\\core\\generic.py:5890: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self._update_inplace(new_data)\n",
      "D:\\AnaconDA\\lib\\site-packages\\ipykernel_launcher.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  app.launch_new_instance()\n",
      "D:\\AnaconDA\\lib\\site-packages\\ipykernel_launcher.py:18: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "int64\n",
      "Index(['DayOfWeek', 'Sales', 'Promo', 'StateHoliday', 'SchoolHoliday',\n",
      "       'StoreType', 'Assortment', 'CompetitionDistance',\n",
      "       'CompetitionOpenSinceMonth', 'CompetitionOpenSinceYear', 'Promo2',\n",
      "       'Promo2SinceWeek', 'Promo2SinceYear', 'Year', 'Month', 'Day'],\n",
      "      dtype='object')\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\AnaconDA\\lib\\site-packages\\ipykernel_launcher.py:19: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    }
   ],
   "source": [
    "#获取商店1号的真实数据和预测数据\n",
    "val_train,val_store,val_test = load_data(Dataset_dir)\n",
    "val_train = val_train[val_train['Open'] != 0]\n",
    "val_train = pd.merge(val_train, val_store, on='Store')\n",
    "test_train = val_train[val_train.Store == 1]\n",
    "train_val1 = pd.DataFrame(test_train,columns=['Sales'])\n",
    "train_val1 = np.log1p(train_val1)\n",
    "build_feature(test_train,True)\n",
    "test_train.drop('Sales',axis=1,inplace=True)\n",
    "pred = estimator.predict(test_train)\n",
    "train_val2 = pd.DataFrame(pred,columns=['Sales'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xb74e7f0>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_val1.plot.line()\n",
    "train_val2.plot.line()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xb02c518>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb.plot_importance(estimator.get_booster())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "building tree 1 of 1000\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    2.9s remaining:    0.0s\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "building tree 2 of 1000\n",
      "building tree 3 of 1000\n",
      "building tree 4 of 1000\n",
      "building tree 5 of 1000\n",
      "building tree 6 of 1000\n",
      "building tree 7 of 1000\n",
      "building tree 8 of 1000\n",
      "building tree 9 of 1000\n",
      "building tree 10 of 1000\n",
      "building tree 11 of 1000\n",
      "building tree 12 of 1000\n",
      "building tree 13 of 1000\n",
      "building tree 14 of 1000\n",
      "building tree 15 of 1000\n",
      "building tree 16 of 1000\n",
      "building tree 17 of 1000\n",
      "building tree 18 of 1000\n",
      "building tree 19 of 1000\n",
      "building tree 20 of 1000\n",
      "building tree 21 of 1000\n",
      "building tree 22 of 1000\n",
      "building tree 23 of 1000\n",
      "building tree 24 of 1000\n",
      "building tree 25 of 1000\n",
      "building tree 26 of 1000\n",
      "building tree 27 of 1000\n",
      "building tree 28 of 1000\n",
      "building tree 29 of 1000\n",
      "building tree 30 of 1000\n",
      "building tree 31 of 1000\n",
      "building tree 32 of 1000\n",
      "building tree 33 of 1000\n",
      "building tree 34 of 1000\n",
      "building tree 35 of 1000\n",
      "building tree 36 of 1000\n",
      "building tree 37 of 1000\n",
      "building tree 38 of 1000\n",
      "building tree 39 of 1000\n",
      "building tree 40 of 1000\n",
      "building tree 41 of 1000\n",
      "building tree 42 of 1000\n",
      "building tree 43 of 1000\n",
      "building tree 44 of 1000\n",
      "building tree 45 of 1000\n",
      "building tree 46 of 1000\n",
      "building tree 47 of 1000\n",
      "building tree 48 of 1000\n",
      "building tree 49 of 1000\n",
      "building tree 50 of 1000\n",
      "building tree 51 of 1000\n",
      "building tree 52 of 1000\n",
      "building tree 53 of 1000\n",
      "building tree 54 of 1000\n",
      "building tree 55 of 1000\n",
      "building tree 56 of 1000\n",
      "building tree 57 of 1000\n",
      "building tree 58 of 1000\n",
      "building tree 59 of 1000\n",
      "building tree 60 of 1000\n",
      "building tree 61 of 1000\n",
      "building tree 62 of 1000\n",
      "building tree 63 of 1000\n",
      "building tree 64 of 1000\n",
      "building tree 65 of 1000\n",
      "building tree 66 of 1000\n",
      "building tree 67 of 1000\n",
      "building tree 68 of 1000\n",
      "building tree 69 of 1000\n",
      "building tree 70 of 1000\n",
      "building tree 71 of 1000\n",
      "building tree 72 of 1000\n",
      "building tree 73 of 1000\n",
      "building tree 74 of 1000\n",
      "building tree 75 of 1000\n",
      "building tree 76 of 1000\n",
      "building tree 77 of 1000\n",
      "building tree 78 of 1000\n",
      "building tree 79 of 1000\n",
      "building tree 80 of 1000\n",
      "building tree 81 of 1000\n",
      "building tree 82 of 1000\n",
      "building tree 83 of 1000\n",
      "building tree 84 of 1000\n",
      "building tree 85 of 1000\n",
      "building tree 86 of 1000\n",
      "building tree 87 of 1000\n",
      "building tree 88 of 1000\n",
      "building tree 89 of 1000\n",
      "building tree 90 of 1000\n",
      "building tree 91 of 1000\n",
      "building tree 92 of 1000\n",
      "building tree 93 of 1000\n",
      "building tree 94 of 1000\n",
      "building tree 95 of 1000\n",
      "building tree 96 of 1000\n",
      "building tree 97 of 1000\n",
      "building tree 98 of 1000\n",
      "building tree 99 of 1000\n",
      "building tree 100 of 1000\n",
      "building tree 101 of 1000\n",
      "building tree 102 of 1000\n",
      "building tree 103 of 1000\n",
      "building tree 104 of 1000\n",
      "building tree 105 of 1000\n",
      "building tree 106 of 1000\n",
      "building tree 107 of 1000\n",
      "building tree 108 of 1000\n",
      "building tree 109 of 1000\n",
      "building tree 110 of 1000\n",
      "building tree 111 of 1000\n",
      "building tree 112 of 1000\n",
      "building tree 113 of 1000\n",
      "building tree 114 of 1000\n",
      "building tree 115 of 1000\n",
      "building tree 116 of 1000\n",
      "building tree 117 of 1000\n",
      "building tree 118 of 1000\n",
      "building tree 119 of 1000\n",
      "building tree 120 of 1000\n",
      "building tree 121 of 1000\n",
      "building tree 122 of 1000\n",
      "building tree 123 of 1000\n",
      "building tree 124 of 1000\n",
      "building tree 125 of 1000\n",
      "building tree 126 of 1000\n",
      "building tree 127 of 1000\n",
      "building tree 128 of 1000\n",
      "building tree 129 of 1000\n",
      "building tree 130 of 1000\n",
      "building tree 131 of 1000\n",
      "building tree 132 of 1000\n",
      "building tree 133 of 1000\n",
      "building tree 134 of 1000\n",
      "building tree 135 of 1000\n",
      "building tree 136 of 1000\n",
      "building tree 137 of 1000\n",
      "building tree 138 of 1000\n",
      "building tree 139 of 1000\n",
      "building tree 140 of 1000\n",
      "building tree 141 of 1000\n",
      "building tree 142 of 1000\n",
      "building tree 143 of 1000\n",
      "building tree 144 of 1000\n",
      "building tree 145 of 1000\n",
      "building tree 146 of 1000\n",
      "building tree 147 of 1000\n",
      "building tree 148 of 1000\n",
      "building tree 149 of 1000\n",
      "building tree 150 of 1000\n",
      "building tree 151 of 1000\n",
      "building tree 152 of 1000\n",
      "building tree 153 of 1000\n",
      "building tree 154 of 1000\n",
      "building tree 155 of 1000\n",
      "building tree 156 of 1000\n",
      "building tree 157 of 1000\n",
      "building tree 158 of 1000\n",
      "building tree 159 of 1000\n",
      "building tree 160 of 1000\n",
      "building tree 161 of 1000\n",
      "building tree 162 of 1000\n",
      "building tree 163 of 1000\n",
      "building tree 164 of 1000\n",
      "building tree 165 of 1000\n",
      "building tree 166 of 1000\n",
      "building tree 167 of 1000\n",
      "building tree 168 of 1000\n",
      "building tree 169 of 1000\n",
      "building tree 170 of 1000\n",
      "building tree 171 of 1000\n",
      "building tree 172 of 1000\n",
      "building tree 173 of 1000\n",
      "building tree 174 of 1000\n",
      "building tree 175 of 1000\n",
      "building tree 176 of 1000\n",
      "building tree 177 of 1000\n",
      "building tree 178 of 1000\n",
      "building tree 179 of 1000\n",
      "building tree 180 of 1000\n",
      "building tree 181 of 1000\n",
      "building tree 182 of 1000\n",
      "building tree 183 of 1000\n",
      "building tree 184 of 1000\n",
      "building tree 185 of 1000\n",
      "building tree 186 of 1000\n",
      "building tree 187 of 1000\n",
      "building tree 188 of 1000\n",
      "building tree 189 of 1000\n",
      "building tree 190 of 1000\n",
      "building tree 191 of 1000\n",
      "building tree 192 of 1000\n",
      "building tree 193 of 1000\n",
      "building tree 194 of 1000\n",
      "building tree 195 of 1000\n",
      "building tree 196 of 1000\n",
      "building tree 197 of 1000\n",
      "building tree 198 of 1000\n",
      "building tree 199 of 1000\n",
      "building tree 200 of 1000\n",
      "building tree 201 of 1000\n",
      "building tree 202 of 1000\n",
      "building tree 203 of 1000\n",
      "building tree 204 of 1000\n",
      "building tree 205 of 1000\n",
      "building tree 206 of 1000\n",
      "building tree 207 of 1000\n",
      "building tree 208 of 1000\n",
      "building tree 209 of 1000\n",
      "building tree 210 of 1000\n",
      "building tree 211 of 1000\n",
      "building tree 212 of 1000\n",
      "building tree 213 of 1000\n",
      "building tree 214 of 1000\n",
      "building tree 215 of 1000\n",
      "building tree 216 of 1000\n",
      "building tree 217 of 1000\n",
      "building tree 218 of 1000\n",
      "building tree 219 of 1000\n",
      "building tree 220 of 1000\n",
      "building tree 221 of 1000\n",
      "building tree 222 of 1000\n",
      "building tree 223 of 1000\n",
      "building tree 224 of 1000\n",
      "building tree 225 of 1000\n",
      "building tree 226 of 1000\n",
      "building tree 227 of 1000\n",
      "building tree 228 of 1000\n",
      "building tree 229 of 1000\n",
      "building tree 230 of 1000\n",
      "building tree 231 of 1000\n",
      "building tree 232 of 1000\n",
      "building tree 233 of 1000\n",
      "building tree 234 of 1000\n",
      "building tree 235 of 1000\n",
      "building tree 236 of 1000\n",
      "building tree 237 of 1000\n",
      "building tree 238 of 1000\n",
      "building tree 239 of 1000\n",
      "building tree 240 of 1000\n",
      "building tree 241 of 1000\n",
      "building tree 242 of 1000\n",
      "building tree 243 of 1000\n",
      "building tree 244 of 1000\n",
      "building tree 245 of 1000\n",
      "building tree 246 of 1000\n",
      "building tree 247 of 1000\n",
      "building tree 248 of 1000\n",
      "building tree 249 of 1000\n",
      "building tree 250 of 1000\n",
      "building tree 251 of 1000\n",
      "building tree 252 of 1000\n",
      "building tree 253 of 1000\n",
      "building tree 254 of 1000\n",
      "building tree 255 of 1000\n",
      "building tree 256 of 1000\n",
      "building tree 257 of 1000\n",
      "building tree 258 of 1000\n",
      "building tree 259 of 1000\n",
      "building tree 260 of 1000\n",
      "building tree 261 of 1000\n",
      "building tree 262 of 1000\n",
      "building tree 263 of 1000\n",
      "building tree 264 of 1000\n",
      "building tree 265 of 1000\n",
      "building tree 266 of 1000\n",
      "building tree 267 of 1000\n",
      "building tree 268 of 1000\n",
      "building tree 269 of 1000\n",
      "building tree 270 of 1000\n",
      "building tree 271 of 1000\n",
      "building tree 272 of 1000\n",
      "building tree 273 of 1000\n",
      "building tree 274 of 1000\n",
      "building tree 275 of 1000\n",
      "building tree 276 of 1000\n",
      "building tree 277 of 1000\n",
      "building tree 278 of 1000\n",
      "building tree 279 of 1000\n",
      "building tree 280 of 1000\n",
      "building tree 281 of 1000\n",
      "building tree 282 of 1000\n",
      "building tree 283 of 1000\n",
      "building tree 284 of 1000\n",
      "building tree 285 of 1000\n",
      "building tree 286 of 1000\n",
      "building tree 287 of 1000\n",
      "building tree 288 of 1000\n",
      "building tree 289 of 1000\n",
      "building tree 290 of 1000\n",
      "building tree 291 of 1000\n",
      "building tree 292 of 1000\n",
      "building tree 293 of 1000\n",
      "building tree 294 of 1000\n",
      "building tree 295 of 1000\n",
      "building tree 296 of 1000\n",
      "building tree 297 of 1000\n",
      "building tree 298 of 1000\n",
      "building tree 299 of 1000\n",
      "building tree 300 of 1000\n",
      "building tree 301 of 1000\n",
      "building tree 302 of 1000\n",
      "building tree 303 of 1000\n",
      "building tree 304 of 1000\n",
      "building tree 305 of 1000\n",
      "building tree 306 of 1000\n",
      "building tree 307 of 1000\n",
      "building tree 308 of 1000\n",
      "building tree 309 of 1000\n",
      "building tree 310 of 1000\n",
      "building tree 311 of 1000\n",
      "building tree 312 of 1000\n",
      "building tree 313 of 1000\n",
      "building tree 314 of 1000\n",
      "building tree 315 of 1000\n",
      "building tree 316 of 1000\n",
      "building tree 317 of 1000\n",
      "building tree 318 of 1000\n",
      "building tree 319 of 1000\n",
      "building tree 320 of 1000\n",
      "building tree 321 of 1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "building tree 322 of 1000\n",
      "building tree 323 of 1000\n",
      "building tree 324 of 1000\n",
      "building tree 325 of 1000\n",
      "building tree 326 of 1000\n",
      "building tree 327 of 1000\n",
      "building tree 328 of 1000\n",
      "building tree 329 of 1000\n",
      "building tree 330 of 1000\n",
      "building tree 331 of 1000\n",
      "building tree 332 of 1000\n",
      "building tree 333 of 1000\n",
      "building tree 334 of 1000\n",
      "building tree 335 of 1000\n",
      "building tree 336 of 1000\n",
      "building tree 337 of 1000\n",
      "building tree 338 of 1000\n",
      "building tree 339 of 1000\n",
      "building tree 340 of 1000\n",
      "building tree 341 of 1000\n",
      "building tree 342 of 1000\n",
      "building tree 343 of 1000\n",
      "building tree 344 of 1000\n",
      "building tree 345 of 1000\n",
      "building tree 346 of 1000\n",
      "building tree 347 of 1000\n",
      "building tree 348 of 1000\n",
      "building tree 349 of 1000\n",
      "building tree 350 of 1000\n",
      "building tree 351 of 1000\n",
      "building tree 352 of 1000\n",
      "building tree 353 of 1000\n",
      "building tree 354 of 1000\n",
      "building tree 355 of 1000\n",
      "building tree 356 of 1000\n",
      "building tree 357 of 1000\n",
      "building tree 358 of 1000\n",
      "building tree 359 of 1000\n",
      "building tree 360 of 1000\n",
      "building tree 361 of 1000\n",
      "building tree 362 of 1000\n",
      "building tree 363 of 1000\n",
      "building tree 364 of 1000\n",
      "building tree 365 of 1000\n",
      "building tree 366 of 1000\n",
      "building tree 367 of 1000\n",
      "building tree 368 of 1000\n",
      "building tree 369 of 1000\n",
      "building tree 370 of 1000\n",
      "building tree 371 of 1000\n",
      "building tree 372 of 1000\n",
      "building tree 373 of 1000\n",
      "building tree 374 of 1000\n",
      "building tree 375 of 1000\n",
      "building tree 376 of 1000\n",
      "building tree 377 of 1000\n",
      "building tree 378 of 1000\n",
      "building tree 379 of 1000\n",
      "building tree 380 of 1000\n",
      "building tree 381 of 1000\n",
      "building tree 382 of 1000\n",
      "building tree 383 of 1000\n",
      "building tree 384 of 1000\n",
      "building tree 385 of 1000\n",
      "building tree 386 of 1000\n",
      "building tree 387 of 1000\n",
      "building tree 388 of 1000\n",
      "building tree 389 of 1000\n",
      "building tree 390 of 1000\n",
      "building tree 391 of 1000\n",
      "building tree 392 of 1000\n",
      "building tree 393 of 1000\n",
      "building tree 394 of 1000\n",
      "building tree 395 of 1000\n",
      "building tree 396 of 1000\n",
      "building tree 397 of 1000\n",
      "building tree 398 of 1000\n",
      "building tree 399 of 1000\n",
      "building tree 400 of 1000\n",
      "building tree 401 of 1000\n",
      "building tree 402 of 1000\n",
      "building tree 403 of 1000\n",
      "building tree 404 of 1000\n",
      "building tree 405 of 1000\n",
      "building tree 406 of 1000\n",
      "building tree 407 of 1000\n",
      "building tree 408 of 1000\n",
      "building tree 409 of 1000\n",
      "building tree 410 of 1000\n",
      "building tree 411 of 1000\n",
      "building tree 412 of 1000\n",
      "building tree 413 of 1000\n",
      "building tree 414 of 1000\n",
      "building tree 415 of 1000\n",
      "building tree 416 of 1000\n",
      "building tree 417 of 1000\n",
      "building tree 418 of 1000\n",
      "building tree 419 of 1000\n",
      "building tree 420 of 1000\n",
      "building tree 421 of 1000\n",
      "building tree 422 of 1000\n",
      "building tree 423 of 1000\n",
      "building tree 424 of 1000\n",
      "building tree 425 of 1000\n",
      "building tree 426 of 1000\n",
      "building tree 427 of 1000\n",
      "building tree 428 of 1000\n",
      "building tree 429 of 1000\n",
      "building tree 430 of 1000\n",
      "building tree 431 of 1000\n",
      "building tree 432 of 1000\n",
      "building tree 433 of 1000\n",
      "building tree 434 of 1000\n",
      "building tree 435 of 1000\n",
      "building tree 436 of 1000\n",
      "building tree 437 of 1000\n",
      "building tree 438 of 1000\n",
      "building tree 439 of 1000\n",
      "building tree 440 of 1000\n",
      "building tree 441 of 1000\n",
      "building tree 442 of 1000\n",
      "building tree 443 of 1000\n",
      "building tree 444 of 1000\n",
      "building tree 445 of 1000\n",
      "building tree 446 of 1000\n",
      "building tree 447 of 1000\n",
      "building tree 448 of 1000\n",
      "building tree 449 of 1000\n",
      "building tree 450 of 1000\n",
      "building tree 451 of 1000\n",
      "building tree 452 of 1000\n",
      "building tree 453 of 1000\n",
      "building tree 454 of 1000\n",
      "building tree 455 of 1000\n",
      "building tree 456 of 1000\n",
      "building tree 457 of 1000\n",
      "building tree 458 of 1000\n",
      "building tree 459 of 1000\n",
      "building tree 460 of 1000\n",
      "building tree 461 of 1000\n",
      "building tree 462 of 1000\n",
      "building tree 463 of 1000\n",
      "building tree 464 of 1000\n",
      "building tree 465 of 1000\n",
      "building tree 466 of 1000\n",
      "building tree 467 of 1000\n",
      "building tree 468 of 1000\n",
      "building tree 469 of 1000\n",
      "building tree 470 of 1000\n",
      "building tree 471 of 1000\n",
      "building tree 472 of 1000\n",
      "building tree 473 of 1000\n",
      "building tree 474 of 1000\n",
      "building tree 475 of 1000\n",
      "building tree 476 of 1000\n",
      "building tree 477 of 1000\n",
      "building tree 478 of 1000\n",
      "building tree 479 of 1000\n",
      "building tree 480 of 1000\n",
      "building tree 481 of 1000\n",
      "building tree 482 of 1000\n",
      "building tree 483 of 1000\n",
      "building tree 484 of 1000\n",
      "building tree 485 of 1000\n",
      "building tree 486 of 1000\n",
      "building tree 487 of 1000\n",
      "building tree 488 of 1000\n",
      "building tree 489 of 1000\n",
      "building tree 490 of 1000\n",
      "building tree 491 of 1000\n",
      "building tree 492 of 1000\n",
      "building tree 493 of 1000\n",
      "building tree 494 of 1000\n",
      "building tree 495 of 1000\n",
      "building tree 496 of 1000\n",
      "building tree 497 of 1000\n",
      "building tree 498 of 1000\n",
      "building tree 499 of 1000\n",
      "building tree 500 of 1000\n",
      "building tree 501 of 1000\n",
      "building tree 502 of 1000\n",
      "building tree 503 of 1000\n",
      "building tree 504 of 1000\n",
      "building tree 505 of 1000\n",
      "building tree 506 of 1000\n",
      "building tree 507 of 1000\n",
      "building tree 508 of 1000\n",
      "building tree 509 of 1000\n",
      "building tree 510 of 1000\n",
      "building tree 511 of 1000\n",
      "building tree 512 of 1000\n",
      "building tree 513 of 1000\n",
      "building tree 514 of 1000\n",
      "building tree 515 of 1000\n",
      "building tree 516 of 1000\n",
      "building tree 517 of 1000\n",
      "building tree 518 of 1000\n",
      "building tree 519 of 1000\n",
      "building tree 520 of 1000\n",
      "building tree 521 of 1000\n",
      "building tree 522 of 1000\n",
      "building tree 523 of 1000\n",
      "building tree 524 of 1000\n",
      "building tree 525 of 1000\n",
      "building tree 526 of 1000\n",
      "building tree 527 of 1000\n",
      "building tree 528 of 1000\n",
      "building tree 529 of 1000\n",
      "building tree 530 of 1000\n",
      "building tree 531 of 1000\n",
      "building tree 532 of 1000\n",
      "building tree 533 of 1000\n",
      "building tree 534 of 1000\n",
      "building tree 535 of 1000\n",
      "building tree 536 of 1000\n",
      "building tree 537 of 1000\n",
      "building tree 538 of 1000\n",
      "building tree 539 of 1000\n",
      "building tree 540 of 1000\n",
      "building tree 541 of 1000\n",
      "building tree 542 of 1000\n",
      "building tree 543 of 1000\n",
      "building tree 544 of 1000\n",
      "building tree 545 of 1000\n",
      "building tree 546 of 1000\n",
      "building tree 547 of 1000\n",
      "building tree 548 of 1000\n",
      "building tree 549 of 1000\n",
      "building tree 550 of 1000\n",
      "building tree 551 of 1000\n",
      "building tree 552 of 1000\n",
      "building tree 553 of 1000\n",
      "building tree 554 of 1000\n",
      "building tree 555 of 1000\n",
      "building tree 556 of 1000\n",
      "building tree 557 of 1000\n",
      "building tree 558 of 1000\n",
      "building tree 559 of 1000\n",
      "building tree 560 of 1000\n",
      "building tree 561 of 1000\n",
      "building tree 562 of 1000\n",
      "building tree 563 of 1000\n",
      "building tree 564 of 1000\n",
      "building tree 565 of 1000\n",
      "building tree 566 of 1000\n",
      "building tree 567 of 1000\n",
      "building tree 568 of 1000\n",
      "building tree 569 of 1000\n",
      "building tree 570 of 1000\n",
      "building tree 571 of 1000\n",
      "building tree 572 of 1000\n",
      "building tree 573 of 1000\n",
      "building tree 574 of 1000\n",
      "building tree 575 of 1000\n",
      "building tree 576 of 1000\n",
      "building tree 577 of 1000\n",
      "building tree 578 of 1000\n",
      "building tree 579 of 1000\n",
      "building tree 580 of 1000\n",
      "building tree 581 of 1000\n",
      "building tree 582 of 1000\n",
      "building tree 583 of 1000\n",
      "building tree 584 of 1000\n",
      "building tree 585 of 1000\n",
      "building tree 586 of 1000\n",
      "building tree 587 of 1000\n",
      "building tree 588 of 1000\n",
      "building tree 589 of 1000\n",
      "building tree 590 of 1000\n",
      "building tree 591 of 1000\n",
      "building tree 592 of 1000\n",
      "building tree 593 of 1000\n",
      "building tree 594 of 1000\n",
      "building tree 595 of 1000\n",
      "building tree 596 of 1000\n",
      "building tree 597 of 1000\n",
      "building tree 598 of 1000\n",
      "building tree 599 of 1000\n",
      "building tree 600 of 1000\n",
      "building tree 601 of 1000\n",
      "building tree 602 of 1000\n",
      "building tree 603 of 1000\n",
      "building tree 604 of 1000\n",
      "building tree 605 of 1000\n",
      "building tree 606 of 1000\n",
      "building tree 607 of 1000\n",
      "building tree 608 of 1000\n",
      "building tree 609 of 1000\n",
      "building tree 610 of 1000\n",
      "building tree 611 of 1000\n",
      "building tree 612 of 1000\n",
      "building tree 613 of 1000\n",
      "building tree 614 of 1000\n",
      "building tree 615 of 1000\n",
      "building tree 616 of 1000\n",
      "building tree 617 of 1000\n",
      "building tree 618 of 1000\n",
      "building tree 619 of 1000\n",
      "building tree 620 of 1000\n",
      "building tree 621 of 1000\n",
      "building tree 622 of 1000\n",
      "building tree 623 of 1000\n",
      "building tree 624 of 1000\n",
      "building tree 625 of 1000\n",
      "building tree 626 of 1000\n",
      "building tree 627 of 1000\n",
      "building tree 628 of 1000\n",
      "building tree 629 of 1000\n",
      "building tree 630 of 1000\n",
      "building tree 631 of 1000\n",
      "building tree 632 of 1000\n",
      "building tree 633 of 1000\n",
      "building tree 634 of 1000\n",
      "building tree 635 of 1000\n",
      "building tree 636 of 1000\n",
      "building tree 637 of 1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "building tree 638 of 1000\n",
      "building tree 639 of 1000\n",
      "building tree 640 of 1000\n",
      "building tree 641 of 1000\n",
      "building tree 642 of 1000\n",
      "building tree 643 of 1000\n",
      "building tree 644 of 1000\n",
      "building tree 645 of 1000\n",
      "building tree 646 of 1000\n",
      "building tree 647 of 1000\n",
      "building tree 648 of 1000\n",
      "building tree 649 of 1000\n",
      "building tree 650 of 1000\n",
      "building tree 651 of 1000\n",
      "building tree 652 of 1000\n",
      "building tree 653 of 1000\n",
      "building tree 654 of 1000\n",
      "building tree 655 of 1000\n",
      "building tree 656 of 1000\n",
      "building tree 657 of 1000\n",
      "building tree 658 of 1000\n",
      "building tree 659 of 1000\n",
      "building tree 660 of 1000\n",
      "building tree 661 of 1000\n",
      "building tree 662 of 1000\n",
      "building tree 663 of 1000\n",
      "building tree 664 of 1000\n",
      "building tree 665 of 1000\n",
      "building tree 666 of 1000\n",
      "building tree 667 of 1000\n",
      "building tree 668 of 1000\n",
      "building tree 669 of 1000\n",
      "building tree 670 of 1000\n",
      "building tree 671 of 1000\n",
      "building tree 672 of 1000\n",
      "building tree 673 of 1000\n",
      "building tree 674 of 1000\n",
      "building tree 675 of 1000\n",
      "building tree 676 of 1000\n",
      "building tree 677 of 1000\n",
      "building tree 678 of 1000\n",
      "building tree 679 of 1000\n",
      "building tree 680 of 1000\n",
      "building tree 681 of 1000\n",
      "building tree 682 of 1000\n",
      "building tree 683 of 1000\n",
      "building tree 684 of 1000\n",
      "building tree 685 of 1000\n",
      "building tree 686 of 1000\n",
      "building tree 687 of 1000\n",
      "building tree 688 of 1000\n",
      "building tree 689 of 1000\n",
      "building tree 690 of 1000\n",
      "building tree 691 of 1000\n",
      "building tree 692 of 1000\n",
      "building tree 693 of 1000\n",
      "building tree 694 of 1000\n",
      "building tree 695 of 1000\n",
      "building tree 696 of 1000\n",
      "building tree 697 of 1000\n",
      "building tree 698 of 1000\n",
      "building tree 699 of 1000\n",
      "building tree 700 of 1000\n",
      "building tree 701 of 1000\n",
      "building tree 702 of 1000\n",
      "building tree 703 of 1000\n",
      "building tree 704 of 1000\n",
      "building tree 705 of 1000\n",
      "building tree 706 of 1000\n",
      "building tree 707 of 1000\n",
      "building tree 708 of 1000\n",
      "building tree 709 of 1000\n",
      "building tree 710 of 1000\n",
      "building tree 711 of 1000\n",
      "building tree 712 of 1000\n",
      "building tree 713 of 1000\n",
      "building tree 714 of 1000\n",
      "building tree 715 of 1000\n",
      "building tree 716 of 1000\n",
      "building tree 717 of 1000\n",
      "building tree 718 of 1000\n",
      "building tree 719 of 1000\n",
      "building tree 720 of 1000\n",
      "building tree 721 of 1000\n",
      "building tree 722 of 1000\n",
      "building tree 723 of 1000\n",
      "building tree 724 of 1000\n",
      "building tree 725 of 1000\n",
      "building tree 726 of 1000\n",
      "building tree 727 of 1000\n",
      "building tree 728 of 1000\n",
      "building tree 729 of 1000\n",
      "building tree 730 of 1000\n",
      "building tree 731 of 1000\n",
      "building tree 732 of 1000\n",
      "building tree 733 of 1000\n",
      "building tree 734 of 1000\n",
      "building tree 735 of 1000\n",
      "building tree 736 of 1000\n",
      "building tree 737 of 1000\n",
      "building tree 738 of 1000\n",
      "building tree 739 of 1000\n",
      "building tree 740 of 1000\n",
      "building tree 741 of 1000\n",
      "building tree 742 of 1000\n",
      "building tree 743 of 1000\n",
      "building tree 744 of 1000\n",
      "building tree 745 of 1000\n",
      "building tree 746 of 1000\n",
      "building tree 747 of 1000\n",
      "building tree 748 of 1000\n",
      "building tree 749 of 1000\n",
      "building tree 750 of 1000\n",
      "building tree 751 of 1000\n",
      "building tree 752 of 1000\n",
      "building tree 753 of 1000\n",
      "building tree 754 of 1000\n",
      "building tree 755 of 1000\n",
      "building tree 756 of 1000\n",
      "building tree 757 of 1000\n",
      "building tree 758 of 1000\n",
      "building tree 759 of 1000\n",
      "building tree 760 of 1000\n",
      "building tree 761 of 1000\n",
      "building tree 762 of 1000\n",
      "building tree 763 of 1000\n",
      "building tree 764 of 1000\n",
      "building tree 765 of 1000\n",
      "building tree 766 of 1000\n",
      "building tree 767 of 1000\n",
      "building tree 768 of 1000\n",
      "building tree 769 of 1000\n",
      "building tree 770 of 1000\n",
      "building tree 771 of 1000\n",
      "building tree 772 of 1000\n",
      "building tree 773 of 1000\n",
      "building tree 774 of 1000\n",
      "building tree 775 of 1000\n",
      "building tree 776 of 1000\n",
      "building tree 777 of 1000\n",
      "building tree 778 of 1000\n",
      "building tree 779 of 1000\n",
      "building tree 780 of 1000\n",
      "building tree 781 of 1000\n",
      "building tree 782 of 1000\n",
      "building tree 783 of 1000\n",
      "building tree 784 of 1000\n",
      "building tree 785 of 1000\n",
      "building tree 786 of 1000\n",
      "building tree 787 of 1000\n",
      "building tree 788 of 1000\n",
      "building tree 789 of 1000\n",
      "building tree 790 of 1000\n",
      "building tree 791 of 1000\n",
      "building tree 792 of 1000\n",
      "building tree 793 of 1000\n",
      "building tree 794 of 1000\n",
      "building tree 795 of 1000\n",
      "building tree 796 of 1000\n",
      "building tree 797 of 1000\n",
      "building tree 798 of 1000\n",
      "building tree 799 of 1000\n",
      "building tree 800 of 1000\n",
      "building tree 801 of 1000\n",
      "building tree 802 of 1000\n",
      "building tree 803 of 1000\n",
      "building tree 804 of 1000\n",
      "building tree 805 of 1000\n",
      "building tree 806 of 1000\n",
      "building tree 807 of 1000\n",
      "building tree 808 of 1000\n",
      "building tree 809 of 1000\n",
      "building tree 810 of 1000\n",
      "building tree 811 of 1000\n",
      "building tree 812 of 1000\n",
      "building tree 813 of 1000\n",
      "building tree 814 of 1000\n",
      "building tree 815 of 1000\n",
      "building tree 816 of 1000\n",
      "building tree 817 of 1000\n",
      "building tree 818 of 1000\n",
      "building tree 819 of 1000\n",
      "building tree 820 of 1000\n",
      "building tree 821 of 1000\n",
      "building tree 822 of 1000\n",
      "building tree 823 of 1000\n",
      "building tree 824 of 1000\n",
      "building tree 825 of 1000\n",
      "building tree 826 of 1000\n",
      "building tree 827 of 1000\n",
      "building tree 828 of 1000\n",
      "building tree 829 of 1000\n",
      "building tree 830 of 1000\n",
      "building tree 831 of 1000\n",
      "building tree 832 of 1000\n",
      "building tree 833 of 1000\n",
      "building tree 834 of 1000\n",
      "building tree 835 of 1000\n",
      "building tree 836 of 1000\n",
      "building tree 837 of 1000\n",
      "building tree 838 of 1000\n",
      "building tree 839 of 1000\n",
      "building tree 840 of 1000\n",
      "building tree 841 of 1000\n",
      "building tree 842 of 1000\n",
      "building tree 843 of 1000\n",
      "building tree 844 of 1000\n",
      "building tree 845 of 1000\n",
      "building tree 846 of 1000\n",
      "building tree 847 of 1000\n",
      "building tree 848 of 1000\n",
      "building tree 849 of 1000\n",
      "building tree 850 of 1000\n",
      "building tree 851 of 1000\n",
      "building tree 852 of 1000\n",
      "building tree 853 of 1000\n",
      "building tree 854 of 1000\n",
      "building tree 855 of 1000\n",
      "building tree 856 of 1000\n",
      "building tree 857 of 1000\n",
      "building tree 858 of 1000\n",
      "building tree 859 of 1000\n",
      "building tree 860 of 1000\n",
      "building tree 861 of 1000\n",
      "building tree 862 of 1000\n",
      "building tree 863 of 1000\n",
      "building tree 864 of 1000\n",
      "building tree 865 of 1000\n",
      "building tree 866 of 1000\n",
      "building tree 867 of 1000\n",
      "building tree 868 of 1000\n",
      "building tree 869 of 1000\n",
      "building tree 870 of 1000\n",
      "building tree 871 of 1000\n",
      "building tree 872 of 1000\n",
      "building tree 873 of 1000\n",
      "building tree 874 of 1000\n",
      "building tree 875 of 1000\n",
      "building tree 876 of 1000\n",
      "building tree 877 of 1000\n",
      "building tree 878 of 1000\n",
      "building tree 879 of 1000\n",
      "building tree 880 of 1000\n",
      "building tree 881 of 1000\n",
      "building tree 882 of 1000\n",
      "building tree 883 of 1000\n",
      "building tree 884 of 1000\n",
      "building tree 885 of 1000\n",
      "building tree 886 of 1000\n",
      "building tree 887 of 1000\n",
      "building tree 888 of 1000\n",
      "building tree 889 of 1000\n",
      "building tree 890 of 1000\n",
      "building tree 891 of 1000\n",
      "building tree 892 of 1000\n",
      "building tree 893 of 1000\n",
      "building tree 894 of 1000\n",
      "building tree 895 of 1000\n",
      "building tree 896 of 1000\n",
      "building tree 897 of 1000\n",
      "building tree 898 of 1000\n",
      "building tree 899 of 1000\n",
      "building tree 900 of 1000\n",
      "building tree 901 of 1000\n",
      "building tree 902 of 1000\n",
      "building tree 903 of 1000\n",
      "building tree 904 of 1000\n",
      "building tree 905 of 1000\n",
      "building tree 906 of 1000\n",
      "building tree 907 of 1000\n",
      "building tree 908 of 1000\n",
      "building tree 909 of 1000\n",
      "building tree 910 of 1000\n",
      "building tree 911 of 1000\n",
      "building tree 912 of 1000\n",
      "building tree 913 of 1000\n",
      "building tree 914 of 1000\n",
      "building tree 915 of 1000\n",
      "building tree 916 of 1000\n",
      "building tree 917 of 1000\n",
      "building tree 918 of 1000\n",
      "building tree 919 of 1000\n",
      "building tree 920 of 1000\n",
      "building tree 921 of 1000\n",
      "building tree 922 of 1000\n",
      "building tree 923 of 1000\n",
      "building tree 924 of 1000\n",
      "building tree 925 of 1000\n",
      "building tree 926 of 1000\n",
      "building tree 927 of 1000\n",
      "building tree 928 of 1000\n",
      "building tree 929 of 1000\n",
      "building tree 930 of 1000\n",
      "building tree 931 of 1000\n",
      "building tree 932 of 1000\n",
      "building tree 933 of 1000\n",
      "building tree 934 of 1000\n",
      "building tree 935 of 1000\n",
      "building tree 936 of 1000\n",
      "building tree 937 of 1000\n",
      "building tree 938 of 1000\n",
      "building tree 939 of 1000\n",
      "building tree 940 of 1000\n",
      "building tree 941 of 1000\n",
      "building tree 942 of 1000\n",
      "building tree 943 of 1000\n",
      "building tree 944 of 1000\n",
      "building tree 945 of 1000\n",
      "building tree 946 of 1000\n",
      "building tree 947 of 1000\n",
      "building tree 948 of 1000\n",
      "building tree 949 of 1000\n",
      "building tree 950 of 1000\n",
      "building tree 951 of 1000\n",
      "building tree 952 of 1000\n",
      "building tree 953 of 1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "building tree 954 of 1000\n",
      "building tree 955 of 1000\n",
      "building tree 956 of 1000\n",
      "building tree 957 of 1000\n",
      "building tree 958 of 1000\n",
      "building tree 959 of 1000\n",
      "building tree 960 of 1000\n",
      "building tree 961 of 1000\n",
      "building tree 962 of 1000\n",
      "building tree 963 of 1000\n",
      "building tree 964 of 1000\n",
      "building tree 965 of 1000\n",
      "building tree 966 of 1000\n",
      "building tree 967 of 1000\n",
      "building tree 968 of 1000\n",
      "building tree 969 of 1000\n",
      "building tree 970 of 1000\n",
      "building tree 971 of 1000\n",
      "building tree 972 of 1000\n",
      "building tree 973 of 1000\n",
      "building tree 974 of 1000\n",
      "building tree 975 of 1000\n",
      "building tree 976 of 1000\n",
      "building tree 977 of 1000\n",
      "building tree 978 of 1000\n",
      "building tree 979 of 1000\n",
      "building tree 980 of 1000\n",
      "building tree 981 of 1000\n",
      "building tree 982 of 1000\n",
      "building tree 983 of 1000\n",
      "building tree 984 of 1000\n",
      "building tree 985 of 1000\n",
      "building tree 986 of 1000\n",
      "building tree 987 of 1000\n",
      "building tree 988 of 1000\n",
      "building tree 989 of 1000\n",
      "building tree 990 of 1000\n",
      "building tree 991 of 1000\n",
      "building tree 992 of 1000\n",
      "building tree 993 of 1000\n",
      "building tree 994 of 1000\n",
      "building tree 995 of 1000\n",
      "building tree 996 of 1000\n",
      "building tree 997 of 1000\n",
      "building tree 998 of 1000\n",
      "building tree 999 of 1000\n",
      "building tree 1000 of 1000\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done 1000 out of 1000 | elapsed: 47.0min finished\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building estimator 1 of 100 for this parallel run (total 100)...\n",
      "Building estimator 2 of 100 for this parallel run (total 100)...\n",
      "Building estimator 3 of 100 for this parallel run (total 100)...\n",
      "Building estimator 4 of 100 for this parallel run (total 100)...\n",
      "Building estimator 5 of 100 for this parallel run (total 100)...\n",
      "Building estimator 6 of 100 for this parallel run (total 100)...\n",
      "Building estimator 7 of 100 for this parallel run (total 100)...\n",
      "Building estimator 8 of 100 for this parallel run (total 100)...\n",
      "Building estimator 9 of 100 for this parallel run (total 100)...\n",
      "Building estimator 10 of 100 for this parallel run (total 100)...\n",
      "Building estimator 11 of 100 for this parallel run (total 100)...\n",
      "Building estimator 12 of 100 for this parallel run (total 100)...\n",
      "Building estimator 13 of 100 for this parallel run (total 100)...\n",
      "Building estimator 14 of 100 for this parallel run (total 100)...\n",
      "Building estimator 15 of 100 for this parallel run (total 100)...\n",
      "Building estimator 16 of 100 for this parallel run (total 100)...\n",
      "Building estimator 17 of 100 for this parallel run (total 100)...\n",
      "Building estimator 18 of 100 for this parallel run (total 100)...\n",
      "Building estimator 19 of 100 for this parallel run (total 100)...\n",
      "Building estimator 20 of 100 for this parallel run (total 100)...\n",
      "Building estimator 21 of 100 for this parallel run (total 100)...\n",
      "Building estimator 22 of 100 for this parallel run (total 100)...\n",
      "Building estimator 23 of 100 for this parallel run (total 100)...\n",
      "Building estimator 24 of 100 for this parallel run (total 100)...\n",
      "Building estimator 25 of 100 for this parallel run (total 100)...\n",
      "Building estimator 26 of 100 for this parallel run (total 100)...\n",
      "Building estimator 27 of 100 for this parallel run (total 100)...\n",
      "Building estimator 28 of 100 for this parallel run (total 100)...\n",
      "Building estimator 29 of 100 for this parallel run (total 100)...\n",
      "Building estimator 30 of 100 for this parallel run (total 100)...\n",
      "Building estimator 31 of 100 for this parallel run (total 100)...\n",
      "Building estimator 32 of 100 for this parallel run (total 100)...\n",
      "Building estimator 33 of 100 for this parallel run (total 100)...\n",
      "Building estimator 34 of 100 for this parallel run (total 100)...\n",
      "Building estimator 35 of 100 for this parallel run (total 100)...\n",
      "Building estimator 36 of 100 for this parallel run (total 100)...\n",
      "Building estimator 37 of 100 for this parallel run (total 100)...\n",
      "Building estimator 38 of 100 for this parallel run (total 100)...\n",
      "Building estimator 39 of 100 for this parallel run (total 100)...\n",
      "Building estimator 40 of 100 for this parallel run (total 100)...\n",
      "Building estimator 41 of 100 for this parallel run (total 100)...\n",
      "Building estimator 42 of 100 for this parallel run (total 100)...\n",
      "Building estimator 43 of 100 for this parallel run (total 100)...\n",
      "Building estimator 44 of 100 for this parallel run (total 100)...\n",
      "Building estimator 45 of 100 for this parallel run (total 100)...\n",
      "Building estimator 46 of 100 for this parallel run (total 100)...\n",
      "Building estimator 47 of 100 for this parallel run (total 100)...\n",
      "Building estimator 48 of 100 for this parallel run (total 100)...\n",
      "Building estimator 49 of 100 for this parallel run (total 100)...\n",
      "Building estimator 50 of 100 for this parallel run (total 100)...\n",
      "Building estimator 51 of 100 for this parallel run (total 100)...\n",
      "Building estimator 52 of 100 for this parallel run (total 100)...\n",
      "Building estimator 53 of 100 for this parallel run (total 100)...\n",
      "Building estimator 54 of 100 for this parallel run (total 100)...\n",
      "Building estimator 55 of 100 for this parallel run (total 100)...\n",
      "Building estimator 56 of 100 for this parallel run (total 100)...\n",
      "Building estimator 57 of 100 for this parallel run (total 100)...\n",
      "Building estimator 58 of 100 for this parallel run (total 100)...\n",
      "Building estimator 59 of 100 for this parallel run (total 100)...\n",
      "Building estimator 60 of 100 for this parallel run (total 100)...\n",
      "Building estimator 61 of 100 for this parallel run (total 100)...\n",
      "Building estimator 62 of 100 for this parallel run (total 100)...\n",
      "Building estimator 63 of 100 for this parallel run (total 100)...\n",
      "Building estimator 64 of 100 for this parallel run (total 100)...\n",
      "Building estimator 65 of 100 for this parallel run (total 100)...\n",
      "Building estimator 66 of 100 for this parallel run (total 100)...\n",
      "Building estimator 67 of 100 for this parallel run (total 100)...\n",
      "Building estimator 68 of 100 for this parallel run (total 100)...\n",
      "Building estimator 69 of 100 for this parallel run (total 100)...\n",
      "Building estimator 70 of 100 for this parallel run (total 100)...\n",
      "Building estimator 71 of 100 for this parallel run (total 100)...\n",
      "Building estimator 72 of 100 for this parallel run (total 100)...\n",
      "Building estimator 73 of 100 for this parallel run (total 100)...\n",
      "Building estimator 74 of 100 for this parallel run (total 100)...\n",
      "Building estimator 75 of 100 for this parallel run (total 100)...\n",
      "Building estimator 76 of 100 for this parallel run (total 100)...\n",
      "Building estimator 77 of 100 for this parallel run (total 100)...\n",
      "Building estimator 78 of 100 for this parallel run (total 100)...\n",
      "Building estimator 79 of 100 for this parallel run (total 100)...\n",
      "Building estimator 80 of 100 for this parallel run (total 100)...\n",
      "Building estimator 81 of 100 for this parallel run (total 100)...\n",
      "Building estimator 82 of 100 for this parallel run (total 100)...\n",
      "Building estimator 83 of 100 for this parallel run (total 100)...\n",
      "Building estimator 84 of 100 for this parallel run (total 100)...\n",
      "Building estimator 85 of 100 for this parallel run (total 100)...\n",
      "Building estimator 86 of 100 for this parallel run (total 100)...\n",
      "Building estimator 87 of 100 for this parallel run (total 100)...\n",
      "Building estimator 88 of 100 for this parallel run (total 100)...\n",
      "Building estimator 89 of 100 for this parallel run (total 100)...\n",
      "Building estimator 90 of 100 for this parallel run (total 100)...\n",
      "Building estimator 91 of 100 for this parallel run (total 100)...\n",
      "Building estimator 92 of 100 for this parallel run (total 100)...\n",
      "Building estimator 93 of 100 for this parallel run (total 100)...\n",
      "Building estimator 94 of 100 for this parallel run (total 100)...\n",
      "Building estimator 95 of 100 for this parallel run (total 100)...\n",
      "Building estimator 96 of 100 for this parallel run (total 100)...\n",
      "Building estimator 97 of 100 for this parallel run (total 100)...\n",
      "Building estimator 98 of 100 for this parallel run (total 100)...\n",
      "Building estimator 99 of 100 for this parallel run (total 100)...\n",
      "Building estimator 100 of 100 for this parallel run (total 100)...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:  9.4min remaining:    0.0s\n",
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:  9.4min finished\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n",
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    3.7s remaining:    0.0s\n",
      "[Parallel(n_jobs=1)]: Done 1000 out of 1000 | elapsed:  2.1min finished\n",
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n"
     ]
    }
   ],
   "source": [
    "#stacking 进行优化改善\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.ensemble import BaggingRegressor\n",
    "from mlxtend.regressor import StackingRegressor\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "rf = RandomForestRegressor(n_estimators=1000,max_depth = 10,verbose=2)\n",
    "br = BaggingRegressor(n_estimators = 100,verbose = 2)\n",
    "dt = DecisionTreeRegressor(max_depth = 10)\n",
    "estimator = xgb.XGBRegressor(max_depth=10,learning_rate =0.1,n_jobs =4, gamma = 0.4,n_estimators=1000,subsample=0.8,colsample_bytree=0.7,nthread=4,scale_pos_weight=1)\n",
    "stregr = StackingRegressor(regressors=[rf,br,dt], \n",
    "                           meta_regressor=estimator)\n",
    "stregr.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[  544   677   841 ... 40230 40231 40232]\n"
     ]
    }
   ],
   "source": [
    "#预测测试数据\n",
    "regetTest = pd.read_csv(\"./test.csv\")\n",
    "replaceID = regetTest[regetTest.Open == 0.0]['Id']\n",
    "print(replaceID.values)\n",
    "test_probs = estimator.predict(test)\n",
    "result = pd.DataFrame({\"Id\": TESTID , 'Sales': np.exp(test_probs)})\n",
    "result.loc[result['Id'].isin(replaceID.values),'Sales'] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "#预测测试数据输出\n",
    "result.to_csv(\"xgboost_submission.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
